Maison > base de données > tutoriel mysql > 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是最好的语言
Libérer: 2018-07-26 17:45:41
original
1773 Les gens l'ont consulté

  • 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
    Copier après la connexion
    Copier après la connexion
    • 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
    Copier après la connexion
    Copier après la connexion

    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;
    Copier après la connexion
    Copier après la connexion

    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
    Copier après la connexion
    Copier après la connexion
    • 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
    Copier après la connexion
    Copier après la connexion

    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;
    Copier après la connexion
    Copier après la connexion

    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!

    Étiquettes associées:
    source:php.cn
    Déclaration de ce site Web
    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
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal