从同一查询中的表中获取总行数和前10行

时间:2012-10-18 20:07:18

标签: php mysql

我正在尝试编写一个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个数组元素。

但这听起来效率不高。

4 个答案:

答案 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;