如果你看my fiddle ,您可以看到我正在运行查询并尝试获取所有匹配行的计数以及结果集。
我想获取匹配的所有行的计数,尽管我可能只返回其中一小部分的结果集,因为我正在使用LIMIT
进行分页> 和偏移
。
我的查询有什么问题?
SELECT item.*, COUNT(item.id) AS _count
FROM item
JOIN user
ON user.username = "Lansana"
AND user.deleted_at IS NULL
JOIN user_item
ON user_item.item_id = item.id
AND user_item.user_id = user.id
AND user_item.deleted_at IS NULL
WHERE item.deleted_at IS NULL
GROUP BY item.id
ORDER BY item.id DESC
最佳答案
您所做的是将查询转换为聚合查询。在大多数数据库(以及最新版本的 MySQL)中,您会收到错误 - 因为 select
具有不在 group by
中的未聚合列。
所有没有 group by
的聚合查询都返回一行。
如果您想要行数,请使用CALC_FOUND_ROWS
(记录为here):
SELECT SQL_CALC_FOUND_ROWS item.*
. . . ;
然后发出另一个查询:
SELECT FOUND_ROWS();
关于MySQL:获取所有匹配行的计数以及结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47240781/