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

mysqlクエリPHP:特定のアイテムを最初にしてから、残りのアイテムを並べ替えたい

    次のいずれかで注文できます

    order by owner <> 'Jan'
    order by owner = 'Jan' desc
    order by case when owner = 'Jan' then 0 else 1 end
    order by if(owner = 'Jan',0,1)
    

    owner = 'Jan' 1を生成します Trueの場合 および0 Falseの場合 、したがって、なぜdesc

    また、最初の4行を除く残りの行の順序は気にしないため、残りのJan行を継続して保持することもできます。

    これを試してください:

    SELECT 
        id, car_name, owner
    FROM
        ((SELECT 
            0 x, t.*
        FROM
            your_table t
        ORDER BY owner <> 'Jan' , id
        LIMIT 4) UNION ALL (SELECT 
            *
        FROM
            (SELECT 
            1 x, t.*
        FROM
            your_table t
        ORDER BY owner <> 'Jan' , id
        LIMIT 4 , 1000) t
        ORDER BY id)) t
    ORDER BY x , id;
    

    Janに4行以上ある場合にのみ機能します。

    SQLFiddle



    1. pl/sqlプロシージャで変数を宣言するときの構文エラー

    2. 明示的結合と暗黙的結合の混合は失敗しますテーブルのエントリがあります...しかし、クエリのこの部分から参照することはできません

    3. Hibernateスキームの命名はOS間で異なります

    4. 緯度と経度を使用した半径40km