我正在运行SQL Server 2012。
我有两张桌子:
表1 [dbo] .FilestoUpdate - 此文件记录以测试重复项:
[ID] [A_number]
1 A069467
2 A078594
3 A085473
etc etc
表2包含我的所有数据: 我正在使用以下查询删除表2中的重复记录:
;WITH Vals AS (SELECT [A_number]
,[Date]
,[ZONE]
,[MGA_N]
,[MGA_E]
,[MI_SQL_Y]
,[MI_SQL_X]
,[RL]
,[SHEET_100K]
,[SHEET_250K]
,[Hole_ID]
,[Sample_Group]
,[Sample_No]
,[Mesh_Size]
,[Sample_Type]
,[DEPTH]
,[Au_ppb]
,[Au_limit]
,[Au_meth]
,[Ag_ppm]
,[Ag_limit]
,[Ag_meth]
,[As_ppm]
,[As_limit]
,[As_meth]
,[Cu_ppm]
,[Cu_limit]
,[Cu_meth]
,[Ni_ppm]
,[Ni_limit]
,[Ni_meth]
,[Co_ppm]
,[Co_limit]
,[Co_meth]
,[Pb_ppm]
,[Pb_limit]
,[Pb_meth]
,[Zn_ppm]
,[Zn_limit]
,[Zn_meth]
,[Lithology]
,[Comments]
,[CompositeID]
,[SourcefileName]
,[Coordinate_ID]
,[Priority]
,[myStyle]
,[MI_PRINX]
,therow = row_number() OVER(PARTITION BY [Coordinate_ID] ORDER BY [Coordinate_ID] DESC)
FROM [DRILLHOLES_Export].[dbo].[WAMEX_Soil_Live]
WHERE [A_number] = 'A069467'
)
DELETE FROM VALS
WHERE therow > 1;
我想循环遍历table1(FilestoUpate
)并使用每个a_number
运行查询,例如'A069467'然后'A078594'然后'A085473 ete等。
这可能吗?
此致
彼得
答案 0 :(得分:0)
是的。 SQL对数据集进行操作,因此您必须使用要删除的行构建一组数据:
DELETE table_to_delete
FROM [DRILLHOLES_Export].[dbo].[WAMEX_Soil_Live] table_to_delete
INNER JOIN [DRILLHOLES_Export].[dbo].[FilestoUpate] table_with_keys
ON table_to_delete.[A_number]=table_with_keys.[A_number]
您还必须提供有关从何处删除数据的信息:table_to_delete