我有一个表,其中包含字段“用户”、“书名”,其中包含以下记录
我执行以下查询
SELECT `bookname`,`user`, count(*) as total FROM `books` GROUP BY `bookname`,`user`
我得到以下输出
我期待这个输出
bookname user total
a u1 2
b u1 1
a u2 1
b u2 0
而且我没有第三张 table 。
知道我做错了什么吗?
最佳答案
你的意思是这样的http://sqlfiddle.com/#!9/d6f8c/12
SELECT s.bookname, s.user, IF(t.count IS NULL, s.count, t.count) FROM
(
SELECT bookname, user, 0 AS `count` FROM
(SELECT DISTINCT bookname FROM books) AS p,
(SELECT DISTINCT user FROM books) AS q
) AS s LEFT JOIN
(SELECT bookname, user, COUNT(*) AS `count` FROM books GROUP BY bookname, user) AS t
ON (s.bookname = t.bookname AND s.user = t.user)
结果
a u1 2
b u1 1
a u2 1
b u2 0
关于php - MySQL 分组依据和计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48696943/