列表中的每个值在另一个 table 的列中出现的次数。 MYSQL

How many times each value from a list appears in a column in another table. MYSQL

我有一个 table 个 ID 值,需要计算每个 ID 在另一个 table 的列中出现的次数。

我已经想出如何只对至少出现一次的值执行此操作:

SELECT one.id, COUNT(*) FROM table1 one, table2 two WHERE one.id = two.id GROUP BY one.id;

但无法弄清楚如何也包含出现在第一个但根本不出现在第二个 table 中的 ID。

示例:

table1:       table2:

+-----+      +-----+
| id  |      | id  |
+-----+      +-----+
| 11  |      | 11  |
| 12  |      | 12  |
| 13  |      | 14  |
| 14  |      | 11  |
+-----+      | 11  |
             | 12  |
             +-----+

结果将是:

+-----+----------+
| id  | count(*) |
+-----+----------+
| 11  | 3        |
| 12  | 2        |
| 14  | 1        |
+-----+----------+

我正在努力让它也包含行 | 13 | 0 |

您正在执行不鼓励的隐式内部联接。相反,您需要的是左连接,例如:

SELECT one.id, COUNT(two.id) 
FROM table1 one LEFT JOIN table2 two 
ON one.id = two.id 
GROUP BY one.id;