【问题标题】:MySql. How can i get count from 2 tablesmysql。我如何从 2 个表中获取计数
【发布时间】:2017-01-29 06:43:08
【问题描述】:

我有两张桌子,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 行。 有可能做这样的事情吗?

【问题讨论】:

  • 您在寻找COUNT(DISTINCT IdA)吗?
  • @shmosel 将其作为答案发布:-)
  • @shmosel。是的,我刚刚尝试了 COUNT(DISTINCT) 并且它有效。感谢您的回复。 :)

标签: mysql sql


【解决方案1】:

你可能想要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

【讨论】:

  • 感谢@GurV 的回答。 :D
【解决方案2】:

是的,您需要不同的列 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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多