【问题标题】:delete rows from table where the columns are from another table从表中删除列来自另一个表的行
【发布时间】:2015-02-18 02:54:23
【问题描述】:

我的触发器有问题,因为我需要从我的一个表中删除行,但 ID 需要从该表连接到刚刚插入的数据。

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

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

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

【问题讨论】:

  • 如果您的子查询返回的值超过一个值,您应该使用WHERE ItineraryReferenceNumber IN (yourSubquery)

标签: sql sql-server triggers sql-delete


【解决方案1】:
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 匹配另一个表的某些条件。

【讨论】:

  • @marchemike 在这里,我执行了 SELECT 操作,您可以使用任何操作。如果您有任何困惑,请告诉我。
【解决方案2】:

实际上,您只是从 TransactionTable 中删除 inserted 表中的记录。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 2016-08-28
    • 2013-09-20
    • 2016-11-06
    相关资源
    最近更新 更多