gpt4 book ai didi

sql-server - SQL Server : Insert a new row for every unique value in column 1

转载 作者:行者123 更新时间:2023-12-01 11:21:59 25 4
gpt4 key购买 nike

使用 SQL Server 我试图找到表的第 1 列中的每个唯一值,然后使用该唯一的第 1 列值插入一个新行并添加一个第 2 列值。第 2 列的值每次都相同。

请注意:我可以通过从数据库中的第 1 列中提取唯一值并为每个值添加一个插入来完成此操作,但我在第 1 列中有 160 万个唯一值,因此以这种方式编写它会很烦人。

以第 1 列中的 2 个唯一值为例:

select *
from dbo.SettopSubscription
where MacAddr = '0000000ee4b5'
or MacAddr = '0000003a9667'

结果:
MacAddr      PackageId   
------------ -----------
0000000ee4b5 11
0000000ee4b5 3
0000003a9667 241
0000003a9667 241
0000003a9667 11
0000003a9667 211
0000003a9667 8
0000003a9667 4411
0000003a9667 4412
0000003a9667 4479

现在我想将 PackageId = 37 添加到每个唯一的 MacAddr 值,但到目前为止还没有运气写一些东西来查找和添加唯一的值。如前所述,我可以通过为每个 MacAddr 编写一个插入脚本轻松地做到这一点,但这需要永远花费 160 万个 MacAddr 值。

开始 View ,同上:
MacAddr      PackageId   
------------ -----------
0000000ee4b5 11
0000000ee4b5 3
0000003a9667 241
0000003a9667 241
0000003a9667 11
0000003a9667 211
0000003a9667 8
0000003a9667 4411
0000003a9667 4412
0000003a9667 4479

最终结果:
MacAddr      PackageId   
------------ -----------
0000000ee4b5 11
0000000ee4b5 3
***0000000ee4b5 37***
0000003a9667 241
0000003a9667 241
0000003a9667 11
0000003a9667 211
0000003a9667 8
0000003a9667 4411
0000003a9667 4412
0000003a9667 4479
***0000003a9667 37***

提前感谢您的帮助。

最佳答案

这将为每个不同的 MacAddr 插入一条记录与 PackageId37还没有 PackageId37 :

insert into SettopSubscription (MacAddr, PackageId)
select distinct s1.MacAddr, 37
from SettopSubscription s1
where not exists
(
select s2.PackageId
from SettopSubscription s2
where s2.MacAddr = s1.MacAddr
and s2.PackageId = 37
);

关于sql-server - SQL Server : Insert a new row for every unique value in column 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41268176/

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