统计结果集行数,常见做法取决于你用的数据库/语言/场景。下面按常见情况说明:
COUNT(*)最通用、最安全。
SELECT COUNT(*) AS total
FROM (
SELECT *
FROM your_table
WHERE conditions
) t;
✅ 适用于:
COUNT(*)(推荐)如果不需要返回结果集,只关心行数:
SELECT COUNT(*)
FROM your_table
WHERE conditions;
SELECT SQL_CALC_FOUND_ROWS *
FROM your_table
WHERE conditions;
SELECT FOUND_ROWS(); -- 返回上一条查询的总行数
⚠️ 注意:SQL_CALC_FOUND_ROWS 在 MySQL 8.0.17 已废弃
SELECT COUNT(1) FROM your_table;
或使用:
@@ROWCOUNT
(在存储过程或脚本中)
SELECT COUNT(*) FROM your_table;
或:
SELECT COUNT(1) FROM your_table;
ResultSet rs = stmt.executeQuery(sql);
int count = 0;
while (rs.next()) {
count++;
}
或先查 count:
ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM table");
rs.next();
int count = rs.getInt(1);
cursor.execute("SELECT * FROM table")
rows = cursor.fetchall()
print(len(rows))
或:
cursor.execute("SELECT COUNT(*) FROM table")
count = cursor.fetchone()[0]
-- 查询数据
SELECT *
FROM table
LIMIT 10 OFFSET 0;
-- 查询总条数
SELECT COUNT(*) AS total
FROM table;
| 场景 | 建议 |
|---|---|
| 只关心数量 | 用 COUNT(*) |
| 大数据表 | 避免 SELECT * 再统计 |
| 分页 | 数据查询 + COUNT(*) 分开 |
| 精确统计 | 不用缓存行数 |
如果你能告诉我:
我可以给你更精确的写法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。