【发布时间】:2018-02-24 11:50:06
【问题描述】:
在 MySQL 中你可以做这样的事情
SELECT @n := @n + 1 n,
first_name,
last_name
FROM table1, (SELECT @n := 0) m
ORDER BY first_name, last_name
*(代码块最初取自https://stackoverflow.com/a/16555527/2279200)
Oracle 或 SQL Server 中是否有任何等效方法
注意:
在 SQL Server 中使用
update可以完成类似的操作,但我想问是否可以使用 select 完成。使用
row_number不是一个选项,因为我想处理@n 的值如何变化。我知道 SQL Server 不允许在 select 语句中同时包含临时变量和表列。
【问题讨论】:
-
... 因为我想处理 @n 的值如何变化 这不清楚,至少对我来说不是。你到底想用
@n做什么? -
@GiorgosBetsos 我的意思是我不想像示例中那样增加
1。例如。如果last_name 以'f' 开头,我可以在@n的分配中添加一个控制块。我现在没有现实生活中的例子,我只是在探索可能性。 -
您几乎可以肯定仍然想使用
row_number,但如果没有具体示例说明您想要什么,没人能回答这个问题。
标签: mysql sql sql-server oracle