DELETE ... FROM ... WHERE ... IN

Wol*_*erD 22 sql

我正在寻找一种方法来删除表1中的记录,其中包含'stn'和'jaar'中表2中的匹配组合.table2中列'jaar'的内容在前一个阶段/查询中格式化

年(基准)AS'jaa'

对不起,找不到我发现这个"解决方案"的网站了.

DELETE FROM table1
WHERE stn, year(datum) IN (SELECT stn, jaar FROM table2);
Run Code Online (Sandbox Code Playgroud)

Dav*_*dEG 22

你可以使用exists以下方法实现:

DELETE
  FROM table1
 WHERE exists(
           SELECT 1
             FROM table2
            WHERE table2.stn = table1.stn
              and table2.jaar = year(table1.datum)
       )
Run Code Online (Sandbox Code Playgroud)


Skl*_*vvz 14

规范的T-SQL(SqlServer)答案是使用DELETEwith JOINas

DELETE o
FROM Orders o
INNER JOIN Customers c
    ON o.CustomerId = c.CustomerId
WHERE c.FirstName = 'sklivvz'
Run Code Online (Sandbox Code Playgroud)

这将删除所有具有名字Sklivvz的客户的订单.