0
在使用SQL Server Management Studio進行SQL編碼時,我可以從插入或刪除時具有不同行數的表中刪除。在我更新了表A之後,如果表B中的匹配項存在,我希望從表A中刪除匹配的項目。這個想法最終將只包含表A中已更新的行。我有10列,但將使用4把事情簡單化。如何刪除使用SQL在兩個獨立表中匹配的行?
CREATE TRIGGER utr_Updates
ON tableA
AFTER UPDATE
AS BEGIN
SET NOCOUNT ON;
EXEC usp_updates
END
CREATE PROCEDURE usp_Updates
AS
BEGIN
IF EXISTS (SELECT * FROM tableA
WHERE col1 IN (SELECT DISTINCT col1 FROM tableB))
DELETE FROM tableA
WHERE col1 IN (SELECT DISTINCT col1 FROM tableB)
IF EXISTS (SELECT * FROM tableA
WHERE col2 IN (SELECT DISTINCT col2 FROM tableB))
DELETE FROM tableA
WHERE col2 IN (SELECT DISTINCT col2 FROM tableB)
IF EXISTS (SELECT * FROM tableA
WHERE col3 IN (SELECT DISTINCT col3 FROM tableB))
DELETE FROM tableA
WHERE col3 IN (SELECT DISTINCT col3 FROM tableB)
IF EXISTS (SELECT * FROM tableA
WHERE col4 IN (SELECT DISTINCT col4 FROM tableB))
DELETE FROM tableA
WHERE col4 IN (SELECT DISTINCT col4 FROM tableB)
END
START POINT
START
TABLE A TABLE B
col1 W, X, Y, Z col1 W, X, Y, Z
col2 1, 2, 3, 4 col2 1, 2, 3, 4
col3 A, 5, 6, D col3 A, 5, 6, D
col4 7, B, C, D col3 7, B, C, D
表A更新時間COL1和COL3
AFTER UPDATE
TABLE A TABLE B
col1 W, S, Y, Z col1 W, X, Y, Z
col2 1, 2, 3, 4 col2 1, 2, 3, 4
col3 A, 5, 1, D col3 A, 5, 6, D
col4 7, B, C, D col3 7, B, C, D
期望的結果
TABLE A
col1 W, S, Y, Z
col3 A, 5, 1, D