>  기사  >  데이터 베이스  >  MYSQL은 행 번호 정렬을 표시하고 동일한 테이블의 데이터 정렬을 위아래로 비교합니다.

MYSQL은 행 번호 정렬을 표시하고 동일한 테이블의 데이터 정렬을 위아래로 비교합니다.

php是最好的语言
php是最好的语言원래의
2018-07-26 17:45:411679검색

  • 요구 사항

  1. 소설 장 정보 테이블에는 출판 시간이 pub_time으로 나와 있습니다. 출판 시간 간격이 3일을 초과하면 중단됩니다

  • Thoughts

    1. 소설 장 정보 테이블을 조회하고, 출간 시간에 따라 장 정보를 정렬한 후 줄 번호를 추가하세요. 동일한 정보로 table1과 table2를 생성합니다

    2. left Join 관련 쿼리, table1 행 번호는 n이고 table2 행 번호는 n+1입니다. 데이터 릴리스 시간을 비교하면 3일 이상 존재하면 업데이트된다는 의미입니다. is broken

  • 준비 작업

  • 챕터 테이블:

    CREATE TABLE `t_chapter` (  `id` varchar(255) NOT NULL COMMENT '主键',  `auto_code` varchar(255) NOT NULL COMMENT '编号',  `production_number` varchar(11) NOT NULL COMMENT '作品编号',  `pub_time` datetime DEFAULT NULL COMMENT '发布时间',  PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    • Start

    1. 챕터 테이블을 출시 시간에 따라 오름차순으로 정렬하고 줄 번호를 표시합니다

            SELECT
                t.auto_code ,
                t.id ,
                t.production_number ,
                t.pub_time ,
                (@rowNum :=@rowNum + 1) AS rowNo        FROM
                t_chapter t ,
                (SELECT(@rowNum := 0)) b        WHERE 
               t.production_number = 1414(指定作品)        ORDER BY
                t.pub_time ASC

    출시 시간순으로 쿼리 결과가 정렬되었습니다
    MYSQL은 행 번호 정렬을 표시하고 동일한 테이블의 데이터 정렬을 위아래로 비교합니다.

    • 관련 쿼리

        SELECT
            count(1)    FROM
            (            SELECT
                    t.auto_code ,
                    t.id ,
                    t.production_number ,
                    t.pub_time ,
                    (@rowNum :=@rowNum + 1) AS rowNo            FROM
                    t_chapter t ,
                    (SELECT(@rowNum := 0)) b            WHERE
                    t.production_number = 979   
                ORDER BY
                    t.pub_time ASC
            ) table1    INNER JOIN(        SELECT
                t.auto_code ,
                t.id ,
                t.production_number ,
                t.pub_time ,
                (@a :=@a + 1) AS rowNo        FROM
                t_chapter t ,
                (SELECT(@a := 0)) b        WHERE
                t.production_number = 979
            ORDER BY
                t.pub_time ASC
        ) table2 ON table1.rowNo + 1 = table2.rowNo 
        WHERE
            timestampdiff(DAY , table2.pub_time , table1.pub_time) > 3;

    쿼리 횟수>0인 경우 작업 번호 979에 대한 작업이 중단된 상태임을 더 판단할 수 있습니다. 본인의 업무에 따라

    설명:

    @는 여기서 사용하는데 처음에는 이게 뭔지 몰랐다가 mysql 행 번호를 검색해서 커스텀 변수 사용법을 알아냈습니다(mysql 기능) ) 정렬 및 표시용

    참조 블로그:

    SQL Server 쿼리 행 번호
    MYSQL rownum 구현
    MYSQL 사용자 정의 변수 사용(권장)

    • Requirements

    1. 소설이 작성되었는지 확인해야 합니다. Interrupted 소설 챕터 정보 테이블에는 출시 시간이 있습니다: pub_time. 출시 시간 간격이 3일을 초과하면 중단됩니다

  • Thoughts

    1. 소설 챕터 정보 테이블을 쿼리하고 그에 따라 챕터 정보를 정렬하세요. 릴리스 시간에 줄 번호를 추가합니다. 동일한 정보로 table1과 table2를 생성

    2. left Join 관련 쿼리, table1 행 번호 n과 table2 행 번호 n+1을 비교하여 데이터 해제 시간을 비교하여 3일 이상 존재하면 업데이트가 중단되었음을 의미합니다

  • 준비 작업

  • 챕터 테이블:

    CREATE TABLE `t_chapter` (  `id` varchar(255) NOT NULL COMMENT '主键',  `auto_code` varchar(255) NOT NULL COMMENT '编号',  `production_number` varchar(11) NOT NULL COMMENT '作品编号',  `pub_time` datetime DEFAULT NULL COMMENT '发布时间',  PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    • Start

    1. 챕터 테이블을 출시 시간에 따라 오름차순으로 정렬하고 줄 번호를 표시합니다

            SELECT
                t.auto_code ,
                t.id ,
                t.production_number ,
                t.pub_time ,
                (@rowNum :=@rowNum + 1) AS rowNo        FROM
                t_chapter t ,
                (SELECT(@rowNum := 0)) b        WHERE 
               t.production_number = 1414(指定作品)        ORDER BY
                t.pub_time ASC

    쿼리 공개 시간에 따라 결과가 정렬되었습니다
    MYSQL은 행 번호 정렬을 표시하고 동일한 테이블의 데이터 정렬을 위아래로 비교합니다.

    • 관련 검색어

        SELECT
            count(1)    FROM
            (            SELECT
                    t.auto_code ,
                    t.id ,
                    t.production_number ,
                    t.pub_time ,
                    (@rowNum :=@rowNum + 1) AS rowNo            FROM
                    t_chapter t ,
                    (SELECT(@rowNum := 0)) b            WHERE
                    t.production_number = 979   
                ORDER BY
                    t.pub_time ASC
            ) table1    INNER JOIN(        SELECT
                t.auto_code ,
                t.id ,
                t.production_number ,
                t.pub_time ,
                (@a :=@a + 1) AS rowNo        FROM
                t_chapter t ,
                (SELECT(@a := 0)) b        WHERE
                t.production_number = 979
            ORDER BY
                t.pub_time ASC
        ) table2 ON table1.rowNo + 1 = table2.rowNo 
        WHERE
            timestampdiff(DAY , table2.pub_time , table1.pub_time) > 3;

    검색 횟수>0인 경우 해당 작업 번호 979에 대한 작업이 중단된 것입니다. business

    설명:

    @이 여기에 사용되었습니다. 처음에는 저도 이것이 무엇인지 모르겠습니다. 그러다가 mysql 줄 번호를 검색해 보니 정렬 및 정렬에 사용자 정의 변수(mysql 기능)를 사용하는 것으로 나타났습니다. display

    관련 기사:

    C 언어의 버블 정렬, 삽입 정렬, 선택 정렬 알고리즘 비교

    삽입 정렬 정렬 알고리즘 학습-삽입 정렬

    관련 동영상:

    데이터베이스 mysql 동영상 튜토리얼

    위 내용은 MYSQL은 행 번호 정렬을 표시하고 동일한 테이블의 데이터 정렬을 위아래로 비교합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.