ホームページ  >  記事  >  データベース  >  MYSQL は、行番号のソートを表示し、同じテーブルからのデータのソートを上下に比較します。

MYSQL は、行番号のソートを表示し、同じテーブルからのデータのソートを上下に比較します。

php是最好的语言
php是最好的语言オリジナル
2018-07-26 17:45:411679ブラウズ

  • 要件

  1. 小説のチャプター情報テーブルには公開時間が3日を超えると中断されます

  • 感想

    1. 小説の章情報テーブルをクエリし、リリース時間に従って章情報を並べ替え、行番号を追加します。同じ情報を持つ table1 と table2 を生成します

    2. 左結合関連のクエリ、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
    • 開始

    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 カスタム変数使用 (推奨)

    • 要件

    1. 小説が中断されました。小説のチャプター情報テーブルのリリース時間: pub_time。リリース時間間隔が 3 日を超える場合、中断されます

  • 感想

    1. 小説のチャプター情報テーブルをクエリして、チャプター情報をソートします。リリース時刻に行番号を追加します。同じ情報を持つ table1 と table2 を生成します

    2. 左結合関連のクエリ、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
    • 開始

    1. チャプターテーブルをリリース時間に従って昇順にソートし、行番号を表示します

    りー

    クエリ結果はリリース時間順に並べ替えられています
    MYSQL は、行番号のソートを表示し、同じテーブルからのデータのソートを上下に比較します。

    • 関連クエリ

            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

    クエリ数>0の場合、作品番号979の作品は中止されています。あなた自身のビジネスに

    説明: ここでは

    @ が使用されています。最初は私もこれが何なのかわかりませんでしたが、mysql の行番号を検索したところ、カスタム変数 (mysql の機能) を使用していることがわかりました。並べ替えと表示用

    関連記事:

    C言語のバブルソート、挿入ソート、選択ソートアルゴリズムの比較

    挿入ソート並べ替えアルゴリズム学習-挿入ソート

    関連動画:

    データベース mysql ビデオチュートリアル

    以上がMYSQL は、行番号のソートを表示し、同じテーブルからのデータのソートを上下に比較します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。