gpt4 book ai didi

sql-server - 用于更新列中具有相同值的行的 T-SQL

转载 作者:行者123 更新时间:2023-12-02 13:18:35 25 4
gpt4 key购买 nike

我有一个名为 FavoriteFruits 的表,其中包含 NAMEFRUITGUID 列。 table 上已经写满了名字和水果。所以我们可以说:

NAME      FRUIT       GUID
John Apple NULL
John Orange NULL
John Grapes NULL
Peter Canteloupe NULL
Peter Grapefruit NULL

好的,现在我想用新的 GUID 更新 GUID 列(使用 NEWID()),但我想要每个不同的名称具有相同的GUID。因此,我希望所有 John Smiths 具有相同的 GUID,并且我希望 Peters 具有相同的 GUID code>,但该 GUID 与 Johns 使用的不同。所以现在它看起来像这样:

NAME      FRUIT       GUID
John Apple f6172268-78b7-4c2b-8cd7-7a5ca20f6a01
John Orange f6172268-78b7-4c2b-8cd7-7a5ca20f6a01
John Grapes f6172268-78b7-4c2b-8cd7-7a5ca20f6a01
Peter Canteloupe e3b1851c-1927-491a-803e-6b3bce9bf223
Peter Grapefruit e3b1851c-1927-491a-803e-6b3bce9bf223

我可以在更新语句中执行此操作而无需使用游标吗?如果可以的话可以举个例子吗?

谢谢大家...

最佳答案

更新 CTE 不起作用,因为 it'll evaluate per row 。表变量可以工作:

您应该能够使用表变量作为更新数据的源。这未经测试,但它看起来像:

DECLARE @n TABLE (Name varchar(10), Guid uniqueidentifier);

INSERT @n
SELECT Name, newid() AS Guid
FROM FavoriteFruits
GROUP BY Name;

UPDATE f
SET f.Guid = n.Guid
FROM @n n
JOIN FavoriteFruits f ON f.Name = n.Name

这样就可以用每个名称的 GUID 填充变量,然后将其连接回原始表并进行相应更新。

关于sql-server - 用于更新列中具有相同值的行的 T-SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7871048/

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