요구 사항
소설 장 정보 테이블에는 출판 시간이 pub_time으로 나와 있습니다. 출판 시간 간격이 3일을 초과하면 중단됩니다
Thoughts
소설 장 정보 테이블을 조회하고, 출간 시간에 따라 장 정보를 정렬한 후 줄 번호를 추가하세요. 동일한 정보로 table1과 table2를 생성합니다
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
챕터 테이블을 출시 시간에 따라 오름차순으로 정렬하고 줄 번호를 표시합니다
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
출시 시간순으로 쿼리 결과가 정렬되었습니다
관련 쿼리
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
소설이 작성되었는지 확인해야 합니다. Interrupted 소설 챕터 정보 테이블에는 출시 시간이 있습니다: pub_time. 출시 시간 간격이 3일을 초과하면 중단됩니다
Thoughts
소설 챕터 정보 테이블을 쿼리하고 그에 따라 챕터 정보를 정렬하세요. 릴리스 시간에 줄 번호를 추가합니다. 동일한 정보로 table1과 table2를 생성
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
챕터 테이블을 출시 시간에 따라 오름차순으로 정렬하고 줄 번호를 표시합니다
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
쿼리 공개 시간에 따라 결과가 정렬되었습니다
관련 검색어
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은 행 번호 정렬을 표시하고 동일한 테이블의 데이터 정렬을 위아래로 비교합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!