我需要找到所有有至少1个流通记录的顾客。这是我目前拥有的,但它只能找到一个结果。我究竟做错了什么?表加入count()条件
SELECT *
FROM patrons
INNER JOIN circulations on circulations.patron_id = patrons.id
HAVING COUNT(circulations.id) > 0
我没有给表的结构,因为我想这是没有必要的解决方案。如果需要的话,让我知道,我会尽力将它添加到的问题
我需要找到所有有至少1个流通记录的顾客。这是我目前拥有的,但它只能找到一个结果。我究竟做错了什么?表加入count()条件
SELECT *
FROM patrons
INNER JOIN circulations on circulations.patron_id = patrons.id
HAVING COUNT(circulations.id) > 0
我没有给表的结构,因为我想这是没有必要的解决方案。如果需要的话,让我知道,我会尽力将它添加到的问题
如何:
SELECT * FROM patrons
WHERE EXISTS (SELECT 1 FROM circulations
WHERE circulations.patron_id = patrons.id)
下面应该工作:
SELECT *
FROM patrons
INNER JOIN circulations on circulations.patron_id = patrons.id
GROUP BY patrons.id
这应该这样做,但只有* *为MySQL。其他数据库* reaaaaaly *讨厌这种构造。对于这些,你必须拼出组中的每个“patrons”列,或者在'patrons.id'上做一个子查询,然后将*这个*连接到外部查询中的'partrons'表。 +1无论如何... – SingleNegationElimination 2012-03-21 00:07:25
看看我的示例:
设想的赞助人名称是您的赞助人桌上的专栏。
SELECT PatronName,COUNT(circulations.id) as CountCirculation
FROM patrons
INNER JOIN circulations on circulations.patron_id = patrons.id
group by PatronName
HAVING COUNT(circulations.id) > 0
问候
的Try ...
select *
from patrons p
left join circulation c on c.patron_id = p.id
where not c.patron_id is null
我喜欢这个,因为它不会分组顾客。有没有办法找到同一查询中每个赞助人有多少流通记录? – LordZardeck 2012-03-21 00:10:33
当然,但这是一个不同的问题,所以问另一个问题;这也是一个很好的问题,并且有一些很好的答案,所以不要去改变它。 – SingleNegationElimination 2012-03-21 00:11:54