gpt4 book ai didi

sql - 用另一行的某些值更新每一行

转载 作者:搜寻专家 更新时间:2023-10-30 21:47:09 25 4
gpt4 key购买 nike

我想像下面这样用 SQL 编写一个更新查询:

UPDATE A
SET A.PARENT_ID = [ID of another row]
FROM MY_TABLE AS A

我想要做的是,对于将应用此更新的每一行,我希望它从如下查询中计算部分 [另一行的 ID]:

SELECT A.NAME, B.NAME, MAX(B.ID)
FROM MY_TABLE A, MY_TABLE B
WHERE A.NAME = B.NAME

所以基本上:

  1. 当它更新一行时,它会尝试查找与正在更新的当前行同名的其他行。
  2. 在其中,它将尝试获取具有最高 ID 的行。
  3. 然后它会将正在更新的当前行的 PARENT_ID 值更新为它找到的行的 ID 值。

在 SQL Server 2008 中执行类似操作的方法是什么?

最佳答案

因此,具有相同 Name 的每一行都应具有相同的 ParentID,并且该 ID 值应该是该名称的最高分配 ID 值?

应该这样做:

;with Highest as (
select ID,Name,ParentID,MAX(ID) OVER (PARTITION BY Name) as NewParentID
from MY_TABLE
)
update Highest set ParentID = NewParentID

进一步阅读:

关于sql - 用另一行的某些值更新每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16191581/

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