MySQL的。我如何从2张桌子中获得数量

时间:2017-01-29 06:43:09

标签: mysql sql

我有2个表,TableA和TableB

表A

IdA | Date       | Description  
--- | ---------- | -----------
1   | 2017-01-01 | Sometext1
2   | 2017-01-01 | Sometext2
3   | 2017-01-02 | Sometext3
4   | 2017-01-03 | Sometext4

表B

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行。 有可能做那样的事吗?

2 个答案:

答案 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'