从第一个 table 中删除不匹配的记录
delete unmatched records from first table
我有 table 1 和 table 2 - 左连接表示,我们可以认为如下 -
我想在 table 1 上执行删除,如下所示 - 橙色高亮部分应该被删除
我正在尝试类似的方法 - 但它不起作用。
delete from MY_SCHEMA.TABLE1 DL LEFT JOIN MY_SCHEMA.TABLE2 ERR_TB on
DL.DL_ID1 = ERR_TB.ERR_ID1 and DL.DL_ID2 = ERR_TB.ERR_ID2 ;
是否可以如图2所示进行删除。我想从 table 1.
中删除橙色记录
感谢任何帮助,提前致谢:)
注意 - 这里没有 PK 和 FK,table1 和 table2 有 - 2 个相同的列 - 它们没有相互关联或依赖
你可以试试 not exists
:
delete my_schema.table1 t1
where not exists ( select 1 from table2 t2 where t2.id = t1.id2 );
或minus
:
delete my_schema.table1
where id2 in ( select t1.id2 from table1 t1 minus
select t2.id from table2 t2 );
使用NOT EXISTS
过滤出匹配的行。
其余行是 table2
中没有对应行的行,这些行将被删除。
DELETE FROM MY_SCHEMA.table1 DL
WHERE NOT EXISTS (
SELECT 1 FROM table2 ERR_TB
WHERE ERR_TB.id1 = DL.id1
AND ERR_TB.id2 = DL.id2
)
以上代码基于您的join
声明。
如果您只需要 ERR_TB.id1 = DL.id1
或 ERR_TB.id2 = DL.id2
,则使用以下其中一项:
DELETE FROM MY_SCHEMA.table1 DL
WHERE NOT EXISTS (
SELECT 1 FROM table2 ERR_TB
WHERE ERR_TB.id1 = DL.id1
)
或
DELETE FROM MY_SCHEMA.table1 DL
WHERE NOT EXISTS (
SELECT 1 FROM table2 ERR_TB
WHERE ERR_TB.id2 = DL.id2
)
这个对我有用,希望对你有帮助:
delete t1 from table1 t1
join table2 t2
on t1.id1 = t2.id1
where t1.id1 = t2.id1 and t1.id2 = t2.id2
我有 table 1 和 table 2 - 左连接表示,我们可以认为如下 -
我想在 table 1 上执行删除,如下所示 - 橙色高亮部分应该被删除
我正在尝试类似的方法 - 但它不起作用。
delete from MY_SCHEMA.TABLE1 DL LEFT JOIN MY_SCHEMA.TABLE2 ERR_TB on
DL.DL_ID1 = ERR_TB.ERR_ID1 and DL.DL_ID2 = ERR_TB.ERR_ID2 ;
是否可以如图2所示进行删除。我想从 table 1.
中删除橙色记录感谢任何帮助,提前致谢:) 注意 - 这里没有 PK 和 FK,table1 和 table2 有 - 2 个相同的列 - 它们没有相互关联或依赖
你可以试试 not exists
:
delete my_schema.table1 t1
where not exists ( select 1 from table2 t2 where t2.id = t1.id2 );
或minus
:
delete my_schema.table1
where id2 in ( select t1.id2 from table1 t1 minus
select t2.id from table2 t2 );
使用NOT EXISTS
过滤出匹配的行。
其余行是 table2
中没有对应行的行,这些行将被删除。
DELETE FROM MY_SCHEMA.table1 DL
WHERE NOT EXISTS (
SELECT 1 FROM table2 ERR_TB
WHERE ERR_TB.id1 = DL.id1
AND ERR_TB.id2 = DL.id2
)
以上代码基于您的join
声明。
如果您只需要 ERR_TB.id1 = DL.id1
或 ERR_TB.id2 = DL.id2
,则使用以下其中一项:
DELETE FROM MY_SCHEMA.table1 DL
WHERE NOT EXISTS (
SELECT 1 FROM table2 ERR_TB
WHERE ERR_TB.id1 = DL.id1
)
或
DELETE FROM MY_SCHEMA.table1 DL
WHERE NOT EXISTS (
SELECT 1 FROM table2 ERR_TB
WHERE ERR_TB.id2 = DL.id2
)
这个对我有用,希望对你有帮助:
delete t1 from table1 t1
join table2 t2
on t1.id1 = t2.id1
where t1.id1 = t2.id1 and t1.id2 = t2.id2