如何使用左连接订单?

时间:2012-08-09 03:23:04

标签: mysql

我有USER表(主表)和ONLINE表(与USER有一对一关系的refrence表),如下所示: 我在桌子上使用左连接 enter image description here

我在ONLINE Table的“is_logged”字段中应用order。(ASC) 我得到了订单中的记录,但是所有记录都是首先出现在ONLINE表中的。 我想要用户表顺序的所有记录,但这些记录应该是最后的,在线表中不存在

2 个答案:

答案 0 :(得分: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 Demo

答案 1 :(得分:1)

当它为null时,给它一个大于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