Maison > Article > base de données > MYSQL affiche le tri des numéros de ligne et compare le tri des données de la même table de haut en bas.
Exigences
Vous devez vérifier si le roman a été mis à jour. Le tableau d'informations du chapitre du roman contient la version. time: pub_time, Si l'intervalle de publication dépasse trois jours, la mise à jour sera interrompue
Choses
Requête du tableau d'informations sur le chapitre du roman et ajoutez les informations sur le chapitre Trier par heure de sortie, plus le numéro de ligne. Générez table1 et table2 avec les mêmes informations
requête associée à la jointure gauche Comparez l'heure de publication des données de la ligne n de la table1 avec la ligne n+1 de la table2. jours, cela signifie qu'il est cassé. Mises à jour
Préparation
Tableau des chapitres :
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
Démarrer
Trier le tableau des chapitres par ordre croissant en fonction de l'heure de sortie et afficher le numéro de ligne
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
Les résultats de la requête ont été triés par heure de sortie
Requête associée
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;
Si le nombre de requêtes>0 fonctionne avec le numéro de travail 979 est obsolète, d'autres conditions peuvent être déterminées en fonction de votre propre entreprise
Explication :
@ est utilisé ici au début, je ne savais pas ce que c'était, puis j'ai recherché le numéro de ligne mysql et j'ai découvert qu'il utilise des variables personnalisées (fonctionnalités mysql) pour trier et afficher
Blog de référence :
N° de ligne de requête SQL Server
MYSQL rownum implémente
Utilisation des variables personnalisées MYSQL (recommandé)
Exigences
Besoin de demander si le roman Il y a des interruptions dans les mises à jour. Le tableau d'informations du chapitre du roman a l'heure de sortie : pub_time. Si l'intervalle de sortie dépasse trois jours, les mises à jour seront. être interrompu
Pensées
Interrogez le tableau d'informations du chapitre du roman, triez les informations du chapitre en fonction de l'heure de sortie et ajoutez le numéro de ligne. Générez la table1 et la table2 avec les mêmes informations
requête associée à la jointure gauche Comparez l'heure de publication des données de la ligne n de la table1 avec la ligne n+1 de la table2. jours, cela veut dire qu'il est cassé Mise à jour
Préparation
Table de chapitre :
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
Démarrer
Trier le tableau des chapitres par ordre croissant en fonction de l'heure de sortie et afficher le numéro de ligne
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
Les résultats de la requête ont été triés par heure de sortie
Requête associée
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;
Si le nombre de requêtes>0, alors le numéro de travail. Parce que les travaux de 979 sont sujets à interruption, d'autres conditions peuvent être déterminées en fonction de votre propre entreprise
Explication :
@ est utilisé ici, et je ne le savais pas au début. Quoi, puis j'ai recherché le numéro de ligne mysql et j'ai trouvé l'utilisation de variables personnalisées (fonctionnalités mysql) pour le tri et l'affichage
Articles connexes :
Apprentissage de l'algorithme de tri par insertion - Tri par insertion
Vidéos associées :
Tutoriel vidéo MySQL sur la base de données
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!