我有这个SQL select语句,我需要用它来删除它找到的记录:
SELECT dbo.X_Files.FileID, dbo.X_Files.FileX, dbo.X_ApplyFiles.idPRJ
FROM dbo.X_Files
LEFT OUTER JOIN dbo.X_ApplyFiles ON dbo.X_Files.FileID = dbo.X_ApplyFiles.FileID
WHERE (dbo.X_ApplyFiles.idPRJ IS NULL)
AND (dbo.X_Files.FileX = @FileX)
任何帮助都将不胜感激。
答案 0 :(得分:2)
在' delete':
之后指定表格名称delete dbo.X_Files
FROM dbo.X_Files
LEFT OUTER JOIN dbo.X_ApplyFiles ON dbo.X_Files.FileID = dbo.X_ApplyFiles.FileID
WHERE (dbo.X_ApplyFiles.idPRJ IS NULL)
AND (dbo.X_Files.FileX = @FileX)
答案 1 :(得分:2)
您可以使用CTE
:
;With ToDelete As
(
SELECT dbo.X_Files.*
FROM dbo.X_Files
LEFT OUTER JOIN dbo.X_ApplyFiles ON dbo.X_Files.FileID = dbo.X_ApplyFiles.FileID
WHERE (dbo.X_ApplyFiles.idPRJ IS NULL)
AND (dbo.X_Files.FileX = @FileX)
)
Delete ToDelete
这也是轻松查看您所选记录的好方法:
;With ToDelete As
(
SELECT dbo.X_Files.*
FROM dbo.X_Files
LEFT OUTER JOIN dbo.X_ApplyFiles ON dbo.X_Files.FileID = dbo.X_ApplyFiles.FileID
WHERE (dbo.X_ApplyFiles.idPRJ IS NULL)
AND (dbo.X_Files.FileX = @FileX)
)
Select *
From ToDelete
答案 2 :(得分:0)
您只需删除ID
表中找不到dbo.X_ApplyFiles
的记录
DELETE FROM dbo.X_Files
WHERE dbo.X_Files.FileID NOT IN (SELECT dbo.X_ApplyFiles.FileID FROM dbo.X_ApplyFiles)