MySQL:获取匹配的所有行的计数以及结果集

时间:2017-11-11 17:28:02

标签: mysql

如果查看my fiddle,您可以看到我正在运行查询并尝试获取匹配的所有行的计数以及结果集。

我想获得匹配的所有行的计数,但我可能只返回其中一小部分的结果集,因为我正在对LIMIT进行分页和OFFSET

我的查询有什么问题?

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

1 个答案:

答案 0 :(得分:1)

您所做的是在聚合查询中转换查询。在大多数数据库(以及最新版本的MySQL)中,您会收到错误 - 因为public boolean noneLeft() { for (Bubble b : bubbles) { if (!b.isPopped()) { return false; } } return true; } 的未聚合列不在select中。

所有没有group by的聚合查询只返回一行。

如果您想要行数,请使用group by(记录为here):

CALC_FOUND_ROWS

然后发出另一个查询:

SELECT SQL_CALC_FOUND_ROWS item.* 
. . . ;