如何使用SQL_CALC_FOUND_ROWS和DISTINCT选项构建MySQL查询?
答案 0 :(得分:0)
SQL_CALC_FOUND_ROWS
仅适用于LIMIT
子句,并允许您使用信息函数FOUND_ROWS()
查找完整记录集中的行数,而无需运行其他查询来计算行。
SELECT SQL_CALC_FOUND_ROWS * FROM ... WHERE ... LIMIT X;
SELECT FOUND_ROWS();
由于DISTINCT
和where conditions
等关键字实际上影响了整个记录集,因此SQL_CALC_FOUND_ROWS
函数没有遗漏什么的概念。据我所知,DISTINCT
关键字没有类似的信息功能,除了运行查询两次外别无选择。
SELECT DISTINCT * FROM ... WHERE ...;
SELECT COUNT(*) FROM ... WHERE ...;
注意:您仍然可以在同一查询中同时使用SQL_CALC_FOUND_ROWS
和DISTINCT
,但FOUND_ROWS();
只会看到LIMIT
子句遗漏的内容。