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

ヌルを最後に並べ替える

    あなたが正しい。私が理解できる理由はありませんが、MySQLは受け入れます あいまいなORDER BY 指定した名前がまったく処理されない限り (私が考えることはできません。多分他の人が存在します。)

    すぐに、あいまいさは拒否されます。

    これは受け入れられます(そして冗長です):

    select b.id, a.name as name
        FROM client AS a JOIN client AS b ON (a.id = b.id)
        ORDER BY name, name;
    

    COALESCE(name, '')name IS NULLname OR NULL すべて拒否されます。

    明らかな解決策は、エイリアスに別の名前を使用することです。これは、どちらのテーブルにも表示されません。

    別の可能性は、ネストされたクエリを作成することです:

    SELECT * FROM ( your query here, without ORDER ) AS original
    ORDER BY IF($sortcol is NULL,1,0), $sortcol;
    

    つまり:

    $sortcol="boat";
    $sql = <<<SQL
       SELECT * FROM (
          SELECT fleet,b.boat as boat,owner FROM boats as b 
             LEFT JOIN owners as o ON  b.boat=o.boat 
       ) AS original
       ORDER BY IF($sortcol is NULL,1,0), $sortcol;
    SQL;
    


    1. psqlでスクリプト変数をどのように使用しますか?

    2. PHP / MySQLでAgeを毎日更新できるように、BirthdateとAgeを保存するにはどうすればよいですか?

    3. likeおよびワイルドカードを使用したMySQL検索の最適化

    4. 言語翻訳文法