mysql - 如何连接两个表,保留不满足 JOIN 条件的行?

标签 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 |
    +-------+-------+

工作正常,但事实上我需要这样的东西:

+-------+-------+
| staff | count |
+-------+-------+
| James |     1 |
| Nick  |     1 |
| Jane  |     0 |
| Cole  |     0 |
+-------+-------+

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

要全面了解联接,请访问以下链接:

关于mysql - 如何连接两个表,保留不满足 JOIN 条件的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14558921/

相关文章:

MySQL选择其中varchar长度

javascript - 在phonegap应用程序中将php变量传递给html表单

mysql - 仅第一个开始日期和最后一个完成日期

javascript - 在 JSON 脚本中格式化日期时间

从 Laravel 的belongsToMany 关系中选择自定义列

javascript - 将普通桌面菜单转换为选择选项菜单(适用于移动版本)

php - 我可以在 PHP 中混合使用 MySQL API 吗?

MySQL查询搜索2列共享相同1列的所有列

mysql - PDI(Kettle)循环作业步骤并行化

php - 在循环、 sleep 循环或单独请求中查询数据库