使用 SQL Server,我尝试查找表的第 1 列中的每个唯一值,然后使用该唯一的第 1 列值插入新行并添加第 2 列值。第 2 列的值每次都相同。
需要注意的是:我可以通过从第 1 列的数据库中提取唯一值并为每个值添加一个插入来完成此操作,但我在第 1 列中有 160 万个唯一值,因此以这种方式编写会很烦人。
以第 1 列中的 2 个唯一值为例:
select *
from dbo.SettopSubscription
where MacAddr = '0000000ee4b5'
or MacAddr = '0000003a9667'
Results:
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 值来说,这要花很长时间。
起始视图,同上:
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
with a PackageId
of 37
还没有PackageId
of 37
:
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
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)