MySQL:如果存在于其他表中,则按列排序

时间:2015-01-20 13:20:42

标签: mysql

我有两张桌子

  1. users(用户ID,名称,位置,类型等)
  2. onlineusers(用户ID,状态等)
  3. 我想列出所有users其中type = 'sometype'并在asc中订购这些users,但首先所有用户都存在于onlineusers中表那些不在onlineusers表中的那些。

    我已经成功地将所有在线用户排除在外,但他们并没有按顺序排列。

    这就是我试过的

    SELECT * FROM users u 
    LEFT JOIN onlineusers o on u.userID = o.userID
    where u.type = 'sometype' 
    order by IFNULL(o.userID,9999) desc;
    

    由于

1 个答案:

答案 0 :(得分:4)

SELECT * 
FROM users u 
LEFT JOIN onlineusers o on u.userID = o.userID
where u.type = 'sometype' 
order by o.userID is null,
         u.userID
对于不在线的用户,

o.userID is null会返回1(true),如果是,则返回0(false)。您可以按这两个值排序。