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

MySQLをリストで並べ替える

    1 < 3 < 77 < 123以降 、単純なORDER BY id 十分でしょう。

    ただし、次の方法で注文する場合:77, 3, 123, 1 、次に関数 FIELD()

    SELECT id, name
    FROM mytable 
    WHERE id IN (77, 3, 123, 1) 
    ORDER BY FIELD(id, 77, 3, 123, 1)
    

    クエリがFIELDにリストされているよりも多くの行に一致する場合

    FIELD 0を返します 行がリストされたIDのいずれとも一致しない場合、つまり、リストされたIDに対して返される数よりも小さい数。つまり、クエリがリストした行よりも多くの行に一致する場合、それらの行が最初に表示されます。例:

    SELECT id, name
    FROM mytable 
    WHERE id IN (77, 3, 123, 1, 400) 
    ORDER BY FIELD(id, 77, 3, 123, 1)
    

    この例では、IDが400の行 最初に表示されます。これらの行を最後に表示する場合は、IDのリストを逆にして、DESCを追加するだけです。 :

    SELECT id, name
    FROM mytable 
    WHERE id IN (77, 3, 123, 1, 400) 
    ORDER BY FIELD(id, 1, 123, 3, 77) DESC
    



    1. MacOSXでのMysql5.6の頭痛の種

    2. VirtualBoxを使用してMacにSQLServerをインストールする方法

    3. PDO::fetchAllとPDO::fetchのループ

    4. SQLでの条件付きUPDATEステートメントの使用