[英]Get total row count and first 10 rows from table in the same query
我正在尝试编写一个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个数组元素。
但这听起来不是很有效。
SELECT SQL_CALC_FOUND_ROWS * FROM myTable LIMIT 10;
SELECT FOUND_ROWS();
它不是完全在一个查询中,但是第二个查询始终是相同的,因此不必再次执行完整的上一个查询,如果它是一个复杂的查询,则很好。
正是第一个查询中的SQL_CALC_FOUND_ROWS
子句导致计算记录总数,就好像未添加限制一样。
SELECT COUNT(*),* as cnt FROM myTable group by (anyROW) limit 10
SELECT myTable.*, count(*) as count from myTable LIMIT 10;
应该这样做:
SELECT (SELECT count(*) FROM TheTable) as ct, TheTable.* FROM TheTable limit 10;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.