1

我有这个查询。它从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
4

2 回答 2

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,因此您应该得到正确的结果。

于 2013-10-29T08:49:11.527 回答
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
于 2013-10-29T09:31:32.420 回答