作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两张 table ,与员工和他/她的书相匹配。我想让所有员工都得到结果,尽管他/她没有书(计数为 0)。但是,我在下面编写的代码仅返回至少拥有一本与 where
条件兼容的书籍的员工。如何让所有员工和没有书的员工计数为0?
SELECT staff.name AS sname, Count(book.book_id) AS bcount
FROM db_staff AS staff
LEFT JOIN db_book AS book ON book.staff_id = staff.staff_id
WHERE (book.status_id = 1 OR book.status_id = 3)
GROUP BY staff.staff_id
最佳答案
将过滤条件从 Where
移至 And
子句,如下所示:
SELECT staff.name AS sname, Count(book.book_id) AS bcount
FROM db_staff AS staff
LEFT JOIN db_book AS book ON book.staff_id = staff.staff_id
AND (book.status_id = 1 OR book.status_id = 3)
GROUP BY staff.staff_id
说明:当有where
子句时,会对join
结果进行过滤,不满足条件的行会被过滤掉。当相同的条件成为 on
子句的一部分时,它将被视为 join
条件之一。因此,在左联接
中,即使右侧没有满足联接中所有条件的行,也会返回左侧行。
关于MySQL - 获取左表元素,尽管 'where' 条件不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27795122/
我收到这个查询: $query = mysql_query("SELECT arbejdsopgave.*, DATE_FORMAT(dato, '%d-%m
我是一名优秀的程序员,十分优秀!