【发布时间】:2017-12-16 05:43:48
【问题描述】:
我无法通过 DELETE 查询删除表 [Inventory_Databases_Master] 中的额外行,如下所示:
SELECT SQLInstanceName,DatabaseName
FROM [AdminInventory].[dbo].[Inventory_Databases_Master]
where SQLInstanceName='SMLYNSQL01NOD01'
--返回 26 行
SMLYNSQL01NOD01 DB1
SMLYNSQL01NOD01 嗨
SMLYNSQL01NOD01 DB2
SMLYNSQL01NOD01 DB3
SMLYNSQL01NOD01 DB4
SMLYNSQL01NOD01 DB5
SMLYNSQL01NOD01 DB6
SMLYNSQL01NOD01 DB7
SMLYNSQL01NOD01 DB8
SMLYNSQL01NOD01 DB9
SMLYNSQL01NOD01 DB10
SMLYNSQL01NOD01 DB11
SMLYNSQL01NOD01 DB12
SMLYNSQL01NOD01 DB13
SMLYNSQL01NOD01 DB14
SMLYNSQL01NOD01 DB15
SMLYNSQL01NOD01 DB16
SMLYNSQL01NOD01 DB17
SMLYNSQL01NOD01 DB18
SMLYNSQL01NOD01 DB19
SMLYNSQL01NOD01 DB20
SMLYNSQL01NOD01 DB21
SMLYNSQL01NOD01 DB22
SMLYNSQL01NOD01 DB23
SMLYNSQL01NOD01 DB24
SMLYNSQL01NOD01 DB25
SELECT SQLInstanceName,DatabaseName
FROM [AdminInventory].[dbo].[Inventory_Databases_DailyUpdate] D
WHERE D.RunNumber=(SELECT MAX(RunNumber) from [Inventory_Databases_DailyUpdate])
and SQLInstanceName='SMLYNSQL01NOD01'
--返回 25 行
SMLYNSQL01NOD01 DB1
SMLYNSQL01NOD01 DB2
SMLYNSQL01NOD01 DB3
SMLYNSQL01NOD01 DB4
SMLYNSQL01NOD01 DB5
SMLYNSQL01NOD01 DB6
SMLYNSQL01NOD01 DB7
SMLYNSQL01NOD01 DB8
SMLYNSQL01NOD01 DB9
SMLYNSQL01NOD01 DB10
SMLYNSQL01NOD01 DB11
SMLYNSQL01NOD01 DB12
SMLYNSQL01NOD01 DB13
SMLYNSQL01NOD01 DB14
SMLYNSQL01NOD01 DB15
SMLYNSQL01NOD01 DB16
SMLYNSQL01NOD01 DB17
SMLYNSQL01NOD01 DB18
SMLYNSQL01NOD01 DB19
SMLYNSQL01NOD01 DB20
SMLYNSQL01NOD01 DB21
SMLYNSQL01NOD01 DB22
SMLYNSQL01NOD01 DB23
SMLYNSQL01NOD01 DB24
SMLYNSQL01NOD01 DB25
下面的 DELETE 查询正在删除 0 条记录。我需要删除以 DatabaseName 为 hi 的记录。
DELETE M
FROM Inventory_Databases_Master M
LEFT JOIN Inventory_Databases_DailyUpdate D (NOLOCK)
ON M.SQLInstanceName=D.SQLInstanceName
AND M.DatabaseName=D.DatabaseName
WHERE D.RunNumber=(SELECT MAX(RunNumber) from
[Inventory_Databases_DailyUpdate])
AND D.DatabaseName IS NULL
请帮忙!
【问题讨论】:
-
你能显示正在返回的记录吗?我在想这种情况
AND D.DatabaseName IS NULL导致了这个问题。由于您在上述任何一个查询中都没有。 -
原始问题中的查询结果已更新。感谢您的宝贵时间。
-
如果删除“AND D.DatabaseName IS NULL”,则所有 25 行都将从 Inventory_Databases_Master 中删除,剩下的唯一行是 DatabaseName 为“hi”。但是,我需要相反的是,这 25 行应该保留,并且只有“hi”行应该被删除。
-
然后把
AND D.DatabaseName is NULL改成AND D.DatabaseName = 'hi'
标签: sql-server tsql