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

标签 mysql

如果你看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/

相关文章:

php - num_rows 总是返回 1

php - 我重置了 xampp localhost 的密码,现在我无法访问 phpmyadmin

MYSQL丢失用户密码

mysql 按组按字母顺序排序

mysql - 为什么这个SQL语句读取错误?

php - 将项目从 windows-1256 转换为 utf-8 字符集,正确的步骤是什么?

mysql - 这个 wordpress 更新查询有什么问题?

MYSQL 更新具有重复值但最早日期的行

mysql - 无法修复崩溃的 MySQL 表?

php - 使用 MySQL 和 PHP 为我的电子商务网站显示数据