私は以下のようなUSERテーブル(マスターテーブル)とONLINEテーブル(USERと1対1の関係を持つ参照テーブル)を持っています:私はテーブルで左結合を使用しました
ONLINEテーブルの「is_logged」フィールドで順序を適用しています。(ASC)そして、昇順でレコードを取得しましたが、ONLINEテーブルに存在しないすべてのレコードが最初に来ています。ユーザーテーブルの順序のすべてのレコードが欲しいのですが、オンラインテーブルに存在しないレコードは最後に来る必要があります
私は以下のようなUSERテーブル(マスターテーブル)とONLINEテーブル(USERと1対1の関係を持つ参照テーブル)を持っています:私はテーブルで左結合を使用しました
ONLINEテーブルの「is_logged」フィールドで順序を適用しています。(ASC)そして、昇順でレコードを取得しましたが、ONLINEテーブルに存在しないすべてのレコードが最初に来ています。ユーザーテーブルの順序のすべてのレコードが欲しいのですが、オンラインテーブルに存在しないレコードは最後に来る必要があります
これをチェックしてください。
SELECT o.*
FROM users u
LEFT JOIN online
o ON u.id = o.user_id
ORDER BY COALESCE(is_logged, -1) DESC, user_id ASC
0 より大きい値を指定し、null の場合は 1 を指定します。
SELECT
u.*, IFNULL(o.is_logged, 99) as is_logged
FROM
user u
LEFT JOIN online o ON u.id = o.user_id
ORDER BY is_logged ASC