[英]MySQL - count elements having entries in another table (inner join)
給定以下架構http://sqlfiddle.com/#!9/dbc328,我有兩個表:
名字
id
name
和
地址
id
nameId
address
我需要找出names
有多少資源具有一定數量的地址,例如每個資源3個地址。
使用以下查詢:
SELECT n.id
FROM `names` n
INNER JOIN `addresses` a on a.nameId = n.id
group by n.id
having count(a.id) = 3
我可以找出那些名字,但是我需要一個count()
。
嘗試使用count時,例如
SELECT count(n.id) as cnt
FROM `names` n
INNER JOIN `addresses` a on a.nameId = n.id
group by n.id
having count(a.id) = 3
無法使用,因為我正在使用group by
。 我知道我可以通過使用嵌套查詢來實現,但是我想知道是否可以使用單個查詢來實現。
編輯:預期的響應應該是包含單個字段'cnt'的一行,該字段應返回每個具有3個地址的名稱的數量。
例如,在這種情況下,響應應該為2
,因為符合我們標准的唯一條目是1
和4
編輯:這是工作的嵌套查詢
select count(n.id) as cnt
from `names` n
where n.id IN (SELECT n.id
FROM `names` n
INNER JOIN `addresses` a on a.nameId = n.id
group by n.id
having count(a.id) = 3)
我想實現相同的事情而不必使用嵌套查詢
謝謝,丹尼爾
SELECT COUNT(*) AS total
FROM
(SELECT a.nameId
FROM `names` n
INNER JOIN `addresses` a ON a.nameId = n.id
GROUP BY n.id
HAVING count(a.id) = 3) AS TEMP
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.