mysql - 检查一个表中的 ID 是否存在于另一个表中,如果存在,有多少次

标签 mysql sql join

假设我有两个表

表a

some_ID
1
2
3
4

表b

some_ID
1
2
1
4

现在我想收到的是像这样的表格

id 数量

1 | 2
2 | 1

我尝试了以下查询:

SELECT COUNT(a.some_id) as id  
            FROM Table_a  
            INNER JOIN Table_b  
            ON Table_a.some_id = Table.b.some_id  

但这只返回了两个表中有多少个 id 行。
有帮助吗?

最佳答案

如果你想要零计数:

SELECT a.some_id AS id, count(b.some_id) as amount
FROM a LEFT JOIN b ON a.some_id = b.some_id
GROUP BY a.some_id

结果:

id | amount  
 1 |  2  
 2 |  1  
 3 |  0  
 4 |  1

如果不是:

SELECT a.some_id AS id, count(*) as amount
FROM a INNER JOIN b ON a.some_id = b.some_id
GROUP BY a.some_id

结果:

id | amount  
 1 |  2  
 2 |  1  
 4 |  1  

区别在于连接类型。一旦离开外部连接。然后内连接。请注意,在第一种情况下,使用 count(b.some_id) 进行计数很重要。使用 count(*) 时,缺少 b 条目的行将被计​​为 1。count(*) 计算行数。 count(expression) 计算非空值。

关于mysql - 检查一个表中的 ID 是否存在于另一个表中,如果存在,有多少次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48372844/

相关文章:

mysql - Google Cloud SQL Mysql 5.7 次要版本,如何进行升级?

php - 查询或 PHP 中 mysql 的列总计?

sql - 使用 CASE 在 SQL 中使用 if/else 逻辑正确计算项目

sql-server-2005 - SQL Server选择不同的最新值

Mysql 查询 3 个表和用户元

mysql - ORDER BY soundex 与 WHERE (MySql)

mysql - 从一个表返回另一个表中不存在的值

java - 比较两个数据库中的数据百分比或整个数据集的最佳方法是什么?

mysql - 将两个 SQL 查询的值相加以创建第三个值

sql - 为什么表的顺序在自连接中很重要