SQL:按行数排序(使用COUNT?)

时间:2011-10-19 11:23:29

标签: sql count sql-order-by selected

对于SMF,我正在为我的部落成员制作一个名单(请不要带“你应该问SMF”,因为这完全无关紧要;这只是背景信息)。

我需要它来选择所有成员(来自 smf_members )并根据他们在 smf_permissions 中拥有的权限进行排序(因此脚本可以确定谁的等级更高)。 您可以使用以下代码检索有多少权限:COUNT(permission) FROM smf_permissions.

我现在正在使用这个SQL:

SELECT DISTINCT(m.id_member), m.real_name, m.date_registered  
FROM smf_members AS m, smf_permissions AS p  
WHERE m.id_group=p.id_group  
ORDER BY COUNT(p.permission)

但是,这只返回一个行!如何返回几个行?

干杯, 阿特

1 个答案:

答案 0 :(得分:5)

您需要GROUP BY。我也用明确的JOIN语法重写了。如果要包含权限为零的成员,则可能需要更改为LEFT JOIN

SELECT m.id_member,
       m.real_name,
       m.date_registered,
       COUNT(p.permission) AS N
FROM   smf_members AS m
       JOIN smf_permissions AS p
         ON m.id_group = p.id_group
GROUP  BY m.id_member,
          m.real_name,
          m.date_registered
ORDER  BY COUNT(p.permission)