我正在尝试编写一个mysql查询,以便我可以重新查找表的前10行并在同一查询中获取总行数。
即。结合
SELECT * FROM myTable LIMIT 10; // Get First 10 Rows
和
SELECT COUNT(*) as cnt FROM myTable // Total Row Count
在同一个查询中。
由于我使用PHP,从技术上讲,我可以执行:
SELECT * FROM myTable
然后使用count()获取总行数,使用array_slice获取前10个数组元素。
但这听起来效率不高。
答案 0 :(得分:2)
SELECT SQL_CALC_FOUND_ROWS * FROM myTable LIMIT 10;
SELECT FOUND_ROWS();
它不完全在一个查询中,但第二个查询总是相同的,它不必再次执行完整的先前查询,如果它是一个复杂的查询,那就很好。
第一个查询中的SQL_CALC_FOUND_ROWS
子句导致计算记录总数,就像没有添加限制一样。
答案 1 :(得分:1)
SELECT COUNT(*),* as cnt FROM myTable group by (anyROW) limit 10
答案 2 :(得分:1)
SELECT myTable.*, count(*) as count from myTable LIMIT 10;
答案 3 :(得分:1)
这应该做:
SELECT (SELECT count(*) FROM TheTable) as ct, TheTable.* FROM TheTable limit 10;