sql >> データベース >  >> RDS >> Mysql

MYSQLタグテーブルの並べ替え

    更新:

    以下の新しいコメントに加えて:

    ( 
       SELECT     t.*, COUNT(*) AS tagcount
       FROM       tagged td
       LEFT JOIN  tags t ON (t.id = td.tag_id)
       GROUP BY   td.tag_id
       ORDER BY   tagcount DESC, t.title ASC
       LIMIT      3
    ) ORDER BY title ASC;
    

    結果:

    +------+------------+----------+
    | id   | title      | tagcount |
    +------+------------+----------+
    |    3 | javascript |        2 |
    |    1 | mysql      |        2 |
    |    2 | php        |        3 |
    +------+------------+----------+
    3 rows in set (0.00 sec)
    

    LIMIT 3を変更するだけです LIMIT 10 トップ3ではなくトップ10を取得します。

    前の回答:

    LIMIT 10を追加してみませんか あなたの質問に?

    SELECT     t.*, COUNT(*) AS tagcount
    FROM       tagged td
    LEFT JOIN  tags t ON (t.id = td.tag_id)
    GROUP BY   td.tag_id
    ORDER BY   tagcount DESC, t.title ASC
    LIMIT      10;
    

    テストケース:

    CREATE TABLE tags (id int, title varchar(20));
    CREATE TABLE tagged (tag_id int, post_id int);
    
    INSERT INTO tags VALUES (1, 'mysql');
    INSERT INTO tags VALUES (2, 'php');
    INSERT INTO tags VALUES (3, 'javascript');
    INSERT INTO tags VALUES (4, 'c');
    
    INSERT INTO tagged VALUES (1, 1);
    INSERT INTO tagged VALUES (2, 1);
    INSERT INTO tagged VALUES (1, 2);
    INSERT INTO tagged VALUES (2, 2);
    INSERT INTO tagged VALUES (3, 3);
    INSERT INTO tagged VALUES (2, 4);
    INSERT INTO tagged VALUES (3, 4);
    INSERT INTO tagged VALUES (4, 5);
    

    結果(LIMIT 3を使用 ):

    +------+------------+----------+
    | id   | title      | tagcount |
    +------+------------+----------+
    |    2 | php        |        3 |
    |    3 | javascript |        2 |
    |    1 | mysql      |        2 |
    +------+------------+----------+
    3 rows in set (0.00 sec)
    

    [c]に注意してください タグは上位3つの結果から外れ、同点の場合は行がアルファベット順に並べられます。



    1. mysqlでJSONから値を選択する方法

    2. MySQLの新しいHeatwaveを理解する

    3. SQL Server2005DateAddを使用して日付に日を追加する

    4. PostgreSQL用に生成された列の概要