这是我的 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
谢谢!
最佳答案
尝试使用联接和分组依据,如下所示:
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
,因为条件使用聚合。
关于mysql - 任何人都可以看看 mySQL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12945924/