Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql ORDER BY是否应该更改结果集?_Mysql_Sql Order By - Fatal编程技术网

Mysql ORDER BY是否应该更改结果集?

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名之前就对记录进行了排序。我希望它根据自

我的印象是,在SQL查询中使用ORDER BY不会影响为结果集选择的记录。我认为排序只会影响结果集的表示

然而,最近在使用ORDERBY子句之前,我从一个查询中得到了意想不到的结果。这表明a)ORDER BY可能会影响结果集中包含的记录,或者b)我还有一些其他bug需要解决

是哪一个

以下是查询:
从用户订单中选择节点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对这个术语的解释相符吗?