gpt4 book ai didi

mysql - 选择查询中的临时变量赋值/增量

转载 作者:行者123 更新时间:2023-11-29 10:37:02 27 4
gpt4 key购买 nike

在 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 中是否有等效方法

注意:

  1. 类似的事情可以用 SQL Server 中的 update 来完成,但我想问是否可以用 select 来完成。

  2. 使用 row_number 不是一个选项,因为我想处理 @n 的值如何变化。

  3. 我知道 SQL Server 不允许在 select 语句中同时使用临时变量和表列。

最佳答案

您将使用ROW_NUMBER():

SELECT row_number() over (order by first_name, last_name)
first_name,last_name
FROM table1
ORDER BY first_name, last_name;

这不仅仅是这样做的“另一种方式”。 ROW_NUMBER() 是实现此功能的 ANSI 标准方法 - 您应该了解其他排名和窗口/分析函数。变量的使用是 MySQL 中的一种 hack。

这只是窗口函数最简单的方法。您需要了解其他排名函数(RANK()DENSE_RANK())。您需要了解PARTITION BY。您需要了解条件聚合/FILTER。我从未使用过带有窗口函数的数据库,并且想:“天哪,我希望我可以使用变量来代替”。我经常有相反的想法。

关于mysql - 选择查询中的临时变量赋值/增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46236980/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com