从表中删除列来自另一个表的行

时间:2015-02-18 02:54:24

标签: sql sql-server triggers sql-delete

我的触发器出现问题,因为我需要从其中一个表中删除行,但是需要将id从该表连接到刚刚插入的数据。

        DELETE FROM  TransactionTable where ItineraryReferenceNumber = 
        (select distinct i.ItineraryReferenceNumber from inserted i LEFT JOIN TransactionTable  FS 
        ON i.ItineraryReferenceNumber = FS.ItineraryReferenceNumber)

我需要使用与之匹配的参考号码来获取所有记录,这就是我选择它们的原因。

这是正确的,还是我做错了什么?

2 个答案:

答案 0 :(得分:2)

SELECT CustomerID FROM [Customers] where CUSTOMERID  NOT IN (SELECT O.CUSTOMERID from Customers c, Orders O where O.CustomerID=c.CustomerID)

请参阅此示例代码,来自this database。 这是同一个查询,就像你一样,这将返回没有订单的客户的ID。 你可以使用它,你删除这样的ItineraryReferenceNumber,它匹配另一个表的某些标准。

答案 1 :(得分:1)

您生效,只是删除inserted表中的TransactionTable中的记录。

DELETE FROM TransactionTable 
WHERE ItineraryReferenceNumber IN (
    SELECT ItineraryReferenceNumber FROM inserted
)