php - MySQL 分组依据和计数器

标签 php mysql

我有一个表,其中包含字段“用户”、“书名”,其中包含以下记录

enter image description here

我执行以下查询

SELECT `bookname`,`user`, count(*) as total FROM `books` GROUP BY `bookname`,`user`

我得到以下输出

enter image description here

我期待这个输出

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/

相关文章:

PHP 魔术方法 __set 和 __get

MySQL 连接来自另一个表的计数匹配记录,但我也需要零值

MySQL表之间的关系

javascript - 如何使用 Jquery 获取 pickadate 值?

php - 尝试使用 Doctrine2 访问 PostgreSQL 时出现错误 : undefined table,

php - PHP图像比较模块

php - Laravel Firebase 手机号码 (OTP) 身份验证

php - 如何在同一个表中使用 where 子句进行选择,但传递给表的字符串位于同一文本框中但具有不同的 id

mysql从另一个表填充列最大值

sql - 按 Unix 时间戳 DESC 或 ASC 排序?