这是我的SQL(MySQL)命令:
SELECT pp.pluginid
FROM plugins pp
WHERE
(pp.limit=-1)
OR
(pp.limit>(select count(a.pluginid) from ads a where a.pluginid = pp.pluginid))
ORDER BY count(a.pluginid)
最后一行(order by)不起作用,我理解为什么(因为我不从子查询输出这个值)。但我不知道怎么做,也不知道要找什么命令。
固定!!! 这是我做的:
SELECT pp.pluginid, (select count(a.pluginid) from ads a where a.pluginid = pp.pluginid) as bb
FROM plugins pp
WHERE
(pp.limit=-1)
OR
(pp.limit>(select count(a.pluginid) from ads a where a.pluginid = pp.pluginid))
ORDER BY bb
谢谢!
答案 0 :(得分:3)
尝试使用联接和分组,如下所示:
SELECT pp.pluginid,pp.limit
FROM plugins pp
LEFT OUTER JOIN ads a ON a.pluginid = pp.pluginid
GROUP BY pp.pluginid
HAVING pp.limit=-1 OR pp.limit > COUNT(1)
ORDER BY COUNT(1)
请注意,您需要使用HAVING
代替WHERE
,因为条件使用了聚合。
答案 1 :(得分:1)
我不知道这是否正是您想要的,但请尝试:
SELECT pp.pluginid, count(a.pluginid) nads
FROM plugins pp
JOIN ads a ON a.pluginid = pp.pluginid
WHERE pp.limit = -1
OR pp.limit > nads
GROUP BY a.pluginid
ORDER BY nads
答案 2 :(得分:0)
ORDER BY子句需要db列名