0

私は以下のようなUSERテーブル(マスターテーブル)とONLINEテーブル(USERと1対1の関係を持つ参照テーブル)を持っています:私はテーブルで左結合を使用しました ここに画像の説明を入力してください

ONLINEテーブルの「is_logged」フィールドで順序を適用しています。(ASC)そして、昇順でレコードを取得しましたが、ONLINEテーブルに存在しないすべてのレコードが最初に来ています。ユーザーテーブルの順序のすべてのレコードが欲しいのですが、オンラインテーブルに存在しないレコードは最後に来る必要があります

4

2 に答える 2

3

これをチェックしてください。

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

SQLFiddle デモ

于 2012-08-09T03:34:46.727 に答える
1

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
于 2012-08-09T03:31:41.380 に答える