0

我有 USER 表(主表)和 ONLINE 表(与 USER 具有一对一关系的参考表),如下所示:我在表上使用了左连接 在此处输入图像描述

我在 ONLINE 表的“is_logged”字段上应用 order by。(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 和 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 回答