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.

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.

php是最好的语言
php是最好的语言original
2018-07-26 17:45:411679parcourir

  • Exigences

  1. 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

    1. 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

    2. 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

    1. 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
    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.

    • 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

    1. 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

    1. 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

    2. 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

    1. 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
    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.

    • 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 :

    Conduire en langage C Comparaison des algorithmes de tri à bulles, de tri par insertion et de tri par sélection

    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!

    Déclaration:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn