mysql - 即使计数为 0,如何获取行?只有一张 table

标签 mysql sql select group-by

即使计数为0我也想要计数。我当前的查询是

SELECT `id`,count(0) as `fetchpc` FROM `user` WHERE pid in('4,6,7,8') GROUP BY `id` 

但它只返回那些计数大于0的id

编辑: 用于 in('4,6,7,8') 的值首先在另一个查询中从数据库中获取。然后使用脚本将行转换为 4、6、7、8。

所以所有的值都存在于数据库中。

返回的值也有可能达到 100 多个值。

最佳答案

您可以将此查询加入到一个“虚构的”查询中,该查询以文字形式查询这些 ID:

SELECT    ids.id, COALESCE(cnt, 0)
FROM      (SELECT 4 AS id
           UNION ALL
           SELECT 6 AS id
           UNION ALL
           SELECT 7 AS id
           UNION ALL
           SELECT 8 AS id) ids
LEFT JOIN (SELECT id, COUNT(*) AS cnt
           FROM   fetchpc
           GROUP BY id) t ON t.id = ids.id

关于mysql - 即使计数为 0,如何获取行?只有一张 table ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56925248/

相关文章:

php - 可以使用终端访问 mysql 数据库,但使用 php 时收到 "access denied"消息

sql - django.db.utils.IntegrityError : column "venue_city" contains null values 错误

sql - 获取两个日期之间的每一行的最大值?

SQL Server 2008 - 搜索查询

php - 无法使用 PHP 7.2 从 MySQL 数据库中选择数据

php - 如何避免 mysql 查询中出现很多 OR 语句?

php - Laravel - 在数据库中存储动态选项的问题?

mysql - 如何在 SQL 中的另一个 select 中编写 select 语句

sql - 子查询中两列的 Postgres where 子句

php - MySQL - 具有多对多关系的 INNER JOIN 查询