Mysql ORDER BY是否应该更改结果集?
我的印象是,在SQL查询中使用ORDER BY不会影响为结果集选择的记录。我认为排序只会影响结果集的表示 然而,最近在使用ORDERBY子句之前,我从一个查询中得到了意想不到的结果。这表明a)ORDER BY可能会影响结果集中包含的记录,或者b)我还有一些其他bug需要解决 是哪一个 以下是查询:Mysql ORDER BY是否应该更改结果集?,mysql,sql-order-by,Mysql,Sql Order By,我的印象是,在SQL查询中使用ORDER BY不会影响为结果集选择的记录。我认为排序只会影响结果集的表示 然而,最近在使用ORDERBY子句之前,我从一个查询中得到了意想不到的结果。这表明a)ORDER BY可能会影响结果集中包含的记录,或者b)我还有一些其他bug需要解决 是哪一个 以下是查询:从用户订单中选择节点id按节点id限制100 (节点_id既是主键又是外键) 如您所见,查询包含一个LIMIT子句。如果我使用ORDER BY,似乎在选择前100名之前就对记录进行了排序。我希望它根据自
从用户订单中选择节点id按节点id限制100
(节点_id既是主键又是外键)
如您所见,查询包含一个LIMIT子句。如果我使用ORDER BY,似乎在选择前100名之前就对记录进行了排序。我希望它根据自然顺序选择100条记录,然后根据节点id进行排序
我已经在ORDER BY上查找了信息,但到目前为止,我能找到的唯一信息表明它只会影响演示。。。我正在使用MySQL。您可以使用嵌套查询:
SELECT node_id FROM
(
SELECT node_id FROM users LIMIT 100
) u
ORDER BY node_id
ORDER BY反映LIMIT子句之前所有记录的顺序。要获得您想要的结果,您需要:
select u.node_id
from users u
join
(
SELECT node_id
FROM users
LIMIT 100
) us ON u.node_id = us.node_id
ORDER BY u.node_id
这样,您将首先使用limit子句,获得前100条记录,然后对结果进行排序。join子句比double Select语句快,尤其是在处理多条记录时。这比join慢。这比join慢多少?您使用联接和嵌套查询,而我只使用嵌套查询。据我所知,你的解决方案只是在我的解决方案之上添加了一些。是的,但是你加入了一个子查询,这与那篇文章描述的不一样。你做了一个测试来看看哪个更快吗?没有,但我想。我现在没有足够大的数据库,所以我明天必须测试它。嗨,Natahn,你的第一句话,ORDER BY反映了限制条款之前所有记录的顺序,告诉了我我需要知道的一切。谢谢。你有信心你所说的“自然秩序”与MySQL对这个术语的解释相符吗?