首页 > 解决方案 > ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) 是否保留订单?

问题描述

我计划ROW_NUMBER() OVER (ORDER BY (SELECT NULL))在没有任何适当数据列用于 order-by 子句的选择查询中使用。

通常,如果我使用有效的列数据ROW_NUMBER(),每次执行的顺序都完全相同。ORDER BY通过使用ORDER BY (SELECT NULL)ROW_NUMBER()顺序是什么,它会随着每次执行而改变吗?

如果订单没有改变(从我这边测试,订单没有改变),它有用吗?

标签: mysqlsqlsql-order-by

解决方案


如果没有明确的ORDER BY子句,您可能会ROW_NUMBER()在不同的执行中获得不同的特定行。相同的ORDER BY (SELECT NULL)是绕过语法要求或语法糖的hack;它不执行命令。

你得到相同的结果,是的,但不能保证


推荐阅读