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

AL̲*_*̲̳I 2 mysql

我有两张桌子

  1. users(用户 ID、名称、位置、类型等)
  2. onlineusers(用户 ID、状态等)

我想列出所有userswhere type ='sometype'并按usersasc 排序,但首先所有用户都存在于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;
Run Code Online (Sandbox Code Playgroud)

谢谢

jue*_*n d 5

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
Run Code Online (Sandbox Code Playgroud)

o.userID is null1对于不在线的用户,返回(true);0如果用户在线,则返回 (false)。您可以按这 2 个值进行排序。