Sql 在表格的每一列中插入基于条件的值
我有这样一个产品表: 我想删除此表中的重复行并使用其他表中的ID,因此我使用了一个临时表来添加要删除的ID和要保留的ID: -创建tmp表 创建表tmp ProductId_ToKeep int,ProductId_ToDelete int; -在临时表中收集id较低且名称相同的产品 插入tmp ProductId_以保留 选择[ProductId] 来自dbo。[Product]t1 哪里有 选择1 来自dbo。[产品]t2 其中t2.name=t1.name t2.[ProductId]>t1.[ProductId] ; -在临时表中收集id较高且名称相同的产品 插入tmp ProductId\u ToDelete 选择[ProductId] 来自dbo。[Product]t1 哪里有 选择1 来自dbo。[产品]t2 其中t2.name=t1.name t2.[ProductId]Sql 在表格的每一列中插入基于条件的值,sql,sql-server,tsql,duplicates,temp-tables,Sql,Sql Server,Tsql,Duplicates,Temp Tables,我有这样一个产品表: 我想删除此表中的重复行并使用其他表中的ID,因此我使用了一个临时表来添加要删除的ID和要保留的ID: -创建tmp表 创建表tmp ProductId_ToKeep int,ProductId_ToDelete int; -在临时表中收集id较低且名称相同的产品 插入tmp ProductId_以保留 选择[ProductId] 来自dbo。[Product]t1 哪里有 选择1 来自dbo。[产品]t2 其中t2.name=t1.name t2.[ProductId]>t
我在问是否有人能帮我把ID放在我想要的每一列中。如果我正确地跟随了你,你可以使用一个窗口函数在一个查询中输入代码转换表,如下所示:
insert into #tmp (ProductId_ToKeep, ProductId_ToDelete)
select *
from (
select
ProductId ProductId_ToDelete,
min(ProductId) over(partition by name) ProductId_ToKeep
from dbo.[Product]
) t
where ProductId_ToDelete != ProductId_ToKeep
内部查询提取给定名称的最小ProductId;应该删除的记录上的外部查询筛选器,即其ProductId不是相同名称的最小ProductId。图像的超链接对我们没有帮助。花点时间以文本形式提供示例数据,以便我们可以复制问题并测试解决方案。您的示例数据没有任何重复的行,只有重复的名称值。也许你可以澄清这个问题。谢谢!我放弃了这个想法,在我的情况下,我会把最小值改成最大值,然后得到我想要的。