用LIMIT子句计数

时间:2014-06-10 11:30:16

标签: mysql sql

我使用以下查询来计算总记录数

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(*)有任何性能问题吗?非常感谢任何帮助。

2 个答案:

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