ヌルとブランクを最後にソートし、列の順序でCoalesce関数またはIfのいずれかを使用するすべてのソリューションを読みたい。
並べ替える列はクエリを作成するPHPスクリプトによって動的に指定され、一部の列は結合の2つのテーブルにあるため、私の問題はこれらの問題ではありません。
$sortcol="boat";
$sql= "SELECT fleet,b.boat as boat,owner FROM boats as b
LEFT JOIN owners as o ON b.boat=o.boat
ORDER BY $sortcol";
これはうまく機能します。変数$sortcolを変更できます。出力リストは、nullと空白が一番上にあることを除いてうまく機能します。
他の投稿に基づいて私はこれを試しました
$sortcol="boat";
$sql= "SELECT fleet,b.boat as boat,owner FROM boats as b
LEFT JOIN owners as o ON b.boat=o.boat
ORDER BY IF($sortcol is NULL,1,0), $sortcol";
これにより、「ORDERBY句の列ボートがあいまいです」というエラーがスローされます。当然、b.boatを順番に並べたいのですが、理由がわからないので問題があります。orderby句で関数を使おうとすると、列エイリアスを使用できないようです。
これに対するエレガントな解決策のアイデアはありますか?