2010-10-13 58 views
2

我有一个像这样的查询,我想以分页格式显示排序的记录。在MySQL查询中执行ORDER BY和LIMIT的顺序

这是我的查询。

SELECT * FROM answers 
WHERE userid = '10' 
ORDER BY votes LIMIT 10, 20 

LIMIT的两个参数将用于生成记录的逐页显示。现在,我的问题是ORDER BY。 MySQL如何执行此查询?

1路

  • 根据过滤器
  • 排序他们根据过滤器
  • 选择记录
  • 限制它们

第二方式

  • 选择记录
  • 限制它们
  • 排序他们

如果我认为像MySQL的引擎,我想实现第2次,因为我将不得不以较低的记录进行排序?

有人可以对此有所了解吗?

Regards

回答

1

一个SQL LIMIT将在所有数据库总是对查询结果的工作,所以它会运行与ORDER查询BY然后这一结果将是有限的。这是一个功能需求,数据库不需要像这样执行。

因此第一种方式。

+0

这证明我需要实践的思维像MySQL :) – vikmalhotra 2010-10-13 03:55:04

2

Mysql遵循第一种方式。

0

最后两个答案中提到的第一种方法。从用户角度来看,第二种方式反正不会很有用。

1

如果您想要第二种方式,请尝试使用具有限制的子查询,然后再订购。

喜欢的东西:

SELECT * FROM 
(
    SELECT * FROM answers 
    WHERE userid = '10' 
    LIMIT 10 
) 
ORDER BY votes