1

我正在尝试编写一个 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

4 回答 4

2
SELECT SQL_CALC_FOUND_ROWS * FROM myTable LIMIT 10;

SELECT FOUND_ROWS();

它不完全在一个查询中,但第二个查询总是相同的,它不必再次执行完整的前一个查询,如果它是一个复杂的查询,这很好。

正是SQL_CALC_FOUND_ROWS第一个查询中的子句导致计算总记录数,就好像没有添加限制一样。

于 2012-10-18T20:10:41.447 回答
1

这应该这样做:

SELECT (SELECT count(*) FROM TheTable) as ct, TheTable.* FROM TheTable limit 10;
于 2012-10-18T20:14:20.500 回答
1
SELECT COUNT(*),* as cnt FROM myTable group by (anyROW) limit 10
于 2012-10-18T20:09:33.917 回答
1

SELECT myTable.*, count(*) as count from myTable LIMIT 10;

于 2012-10-18T20:09:50.277 回答