有没有办法在 SQL 中添加 ROW_NUMBER() 而无需使用 OVER (ORDER BY ...)

Is there a way to add ROW_NUMBER() without using OVER (ORDER BY ...) in SQL

有没有一种方法可以不使用 OVER (ORDER BY ...) 而仅根据默认行顺序添加 ROW_NUMBER()

table 中的行没有隐式排序,它是一个逻辑无序集。

但是你可以 row_number() over (order by (select null))

正如 Itzik Ben-Gan 在他关于 window functions 的书中所建议的那样。

对于 PostgreSQL 和 MYSQL 8.0

row_number()over() 

对于 SQL 服务器和 oracle 它将是:

row_number()over(order by (select null))

但是这并没有提到正确的 order by 子句,它不能保证每次列的行号都相同。