ticket
+----------+--------+
| ticketID | assign |
+----------+--------+
| 1015 | NULL |
| 1020 | James |
| 1021 | Nick |
+----------+--------+
staffinfo
+---------+-------+
| staffID | staff |
+---------+-------+
| 1 | Jane |
| 2 | James |
| 3 | Nick |
| 4 | Cole |
+---------+-------+
SELECT staff,COUNT(*) as count FROM staffinfo,ticket
WHERE ticket.assign = staffinfo.staff
GROUP BY staff
result:
+-------+-------+
| staff | count |
+-------+-------+
| James | 1 |
| Nick | 1 |
+-------+-------+
Run Code Online (Sandbox Code Playgroud)
工作正常,但实际上我需要像:
+-------+-------+
| staff | count |
+-------+-------+
| James | 1 |
| Nick | 1 |
| Jane | 0 |
| Cole | 0 |
+-------+-------+
Run Code Online (Sandbox Code Playgroud)
COUNT不计算表中不存在的记录,因为我刚开始学习SQL,我想问一下是否可以计算上述结果?
你应该使用 LEFT JOIN
SELECT a.staff, COUNT(b.assign) as count
FROM staffinfo a
LEFT JOIN ticket b
ON b.assign = a.staff
GROUP BY a.staff
Run Code Online (Sandbox Code Playgroud)
要充分了解联接知识,请访问以下链接:
| 归档时间: |
|
| 查看次数: |
2347 次 |
| 最近记录: |