列表中的每个值在另一个 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;
我有一个 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;