作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个表,其中包含一个 COUNT() 函数,该函数返回所有字段并对它们进行计数。现在,我需要连接另一个表并返回匹配的行数和不匹配的行数。我不太确定如何使用 GROUP BY 和 COUNT() 函数并获得我需要的结果。
SELECT tb1.type, count(tb1.type) as total
FROM table1 tb1
GROUP BY tb1.type
这将为我返回总数:
表 1 的结果:
Type total
Egg 200
Cream 133
Milk 12
那太好了。但是,现在我有另一个表...表 2 有一些匹配的记录,因此在该表上执行相同的查询将显示如下内容:
表2的结果:
Type total
Egg 187
Cream 103
Milk 6
所以,我的结果需要如下所示:
表 1 的结果:
Type total totalINTABLE2 totalNOTINTABLE2
Egg 200 187 13
Cream 133 103 30
Milk 12 6 6
不确定这里加入是否最好,或者是 UNION,还是 EXISTS。让我困惑的是分组依据。
最佳答案
好吧,您可以简单地JOIN
两个结果集,例如
SELECT tb1.type,
tb1.total,
tb2.totalINTABLE2,
(tb1.total - tb2.totalINTABLE2) as totalNOTINTABLE2
FROM (
SELECT type, count(type) as total
FROM table1
GROUP BY type) tb1
JOIN (
SELECT type, count(type) as totalINTABLE2
FROM table2
GROUP BY type) tb2 ON tb1.type = tb2.type;
关于mysql - SQL - 如何对多个表使用 COUNT(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32619325/
我是一名优秀的程序员,十分优秀!