簡體   English   中英

MySQL-計算在另一個表中具有條目的元素(內部聯接)

[英]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 ,因為符合我們標准的唯一條目是14

編輯:這是工作的嵌套查詢

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM