我使用以下查询来计算总记录数
SELECT COUNT(*) as tot FROM last as l JOIN box m on m.id = l.id
WHERE m.st > l.st AND l.id = 23 LIMIT 5;
但即使我把限制5,如何限制为5,这个查询仍然会将总计数返回为20行。使用count(*)有任何性能问题吗?非常感谢任何帮助。
答案 0 :(得分:1)
Count会使您的查询返回1行。限制保留前5行,但您只有1行。
您应该在内部查询中使用limit并在外部计数。像这样:
select count(*) as tot from (
SELECT 1 FROM last as l JOIN box m on m.id = l.id
WHERE m.st > l.st AND l.id = 23 LIMIT 5
) x
答案 1 :(得分:1)
您需要内部查询才能达到目的:
SELECT COUNT(*) as tot
FROM
(SELECT * FROM last as l JOIN box m on m.id = l.id
WHERE m.st > l.st AND l.id = 23 LIMIT 5) AS `t1`;