按另一个表中的列数排序行

时间:2017-10-29 23:13:25

标签: mysql sql

我目前正在通过添加MySQL条款ORDER BY id DESC来输出我的所有成员,但我觉得这不会奖励那些对我的服务有效的人。

我考虑通过他们在ID下的其他表中的条目来判断订单。

基本上,我在询问是否可以对MAIN表中的列进行排序,以计算用户ID在行的列中的行数。

对此虚假的东西

SELECT user_id,name,etc FROM users ORDER BY ( 
  COUNT(SELECT FROM users_interactions WHERE user_id = user_id) ******* 
) ASC

COUNT 语句的末尾,user_id = user_id只是猜测。

1 个答案:

答案 0 :(得分:3)

你几乎就在那里 - 你需要做的是将COUNT放在SELECT内:

SELECT user_id,name,etc FROM users u ORDER BY ( 
    SELECT COUNT(*)
    FROM users_interactions i
    WHERE i.user_id = u.user_id
) ASC

您也可以使用JOIN执行此操作,如下所示:

SELECT u.user_id, u.name, u.etc
FROM users u
LEFT OUTER JOIN users_interactions i ON i.user_id = u.user_id
GROUP BY u.user_id, u.name, u.etc
ORDER BY COUNT(*) ASC