我有2个表,TableA和TableB
IdA | Date | Description
--- | ---------- | -----------
1 | 2017-01-01 | Sometext1
2 | 2017-01-01 | Sometext2
3 | 2017-01-02 | Sometext3
4 | 2017-01-03 | Sometext4
IdB | IdA | Type
--- | --- | ----
1 | 1 | A
2 | 1 | A
3 | 2 | A
4 | 2 | A
5 | 2 | B
6 | 3 | B
7 | 4 | A
Count(IdA) | Type
---------- | ----
3 | A
我尝试使用INNER或LEFT JOIN进行编码,如
SELECT COUNT(tablea.IdA), tableb.Type
FROM tablea INNER JOIN tableb
ON tablea.IdA=tableb.IdA
WHERE tableb.Type='A'
但它总是让我这样
Count(IdA) | Type
---------- | ----
5 | A
我只想用TableB中的WHERE子句计算TableA行。 有可能做那样的事吗?
答案 0 :(得分:0)
您可能想要COUNT(DISTINCT col)
。
试试这个:
SELECT
COUNT(DISTINCT a.IdA), b.Type
FROM
tablea a
INNER JOIN
tableb b ON a.IdA = b.IdA
WHERE
b.Type = 'A'
GROUP BY b.type
答案 1 :(得分:0)
是的,您需要不同的列ID(但这是使用别名的答案)
SELECT COUNT(distinct A.IdA), B.Type
FROM tablea A
INNER JOIN tableb B ON (A.IdA = B.IdA)
WHERE B.Type = 'A'
如果你使用相同的列名加入,你甚至不需要放一个ON子句,这样就可以使sql更短。
SELECT COUNT(distinct A.IdA), B.Type
FROM tablea A
INNER JOIN tableb B
WHERE B.Type = 'A'