我有这个查询。它从rena表中选择所有数据并从gallery表中计算行数,然后从rena表中收集文件> 0的记录。但是查询不起作用,我不知道出了什么问题以及如何解决。
SELECT fol.*,
(SELECT COUNT(*) FROM gallery fil
WHERE fil.ren_id = fol.id) AS "Files"
FROM rena fol where Files>0
我不知道它对 MySQL 是如何工作的,但对于 Oracle,我会做类似的事情
SELECT fol.*, (SELECT count(*) FROM gallery fil
WHERE fil.ren_id = fol.id) AS "Files"
WHERE EXISTS (SELECT 1 FROM gallery fil
WHERE fil.ren_id = fol.id);
因为只要数据库找到与 fil.ren_id = fol.id 匹配的行,您只需要至少一个文件来匹配 > 0,因此您应该得到正确的结果。
试试这个。嵌套查询计数,然后加入 rena
SELECT fol.*,cnt FROM rena fol join
(
select ren_id,count(*) cnt from gallery fil group by ren_id
) as aaa
on fol.id=aaa.ren_id