如何连接两个表,保持不符合JOIN条件的行?

use*_*956 2 mysql sql select

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,我想问一下是否可以计算上述结果?

Joh*_*Woo 8

你应该使用 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)

要充分了解联接知识,请访问以下链接: