我似乎永远不记得这个查询!
我想删除table1中的所有行,其ID与Table2中的相同.
所以:
DELETE table1 t1
WHERE t1.ID = t2.ID
Run Code Online (Sandbox Code Playgroud)
我知道我可以做一个WHERE ID IN(SELECT ID FROM table2)但是如果可能的话我想用JOIN做这个查询.
我正在使用Oracle 10g数据库.
我有以下两个表:
T_DEBTOR :
- ID_DEBTOR
- HEADER
T_ELEMENT :
- ID_ELEMENT
- ID_DEBTOR
- INSURER
Run Code Online (Sandbox Code Playgroud)
这两个表使用ID_DEBTOR字段连接.
我想仅在HEADER不为空时才使用关联的T_DEBTOR.HEADER更新T_ELEMENT.INSURER值.换句话说:
If T_DEBTOR.HEADER != null
Then T_ELEMENT.INSURER = T_DEBTOR.HEADER
Else T_ELEMENT.INSURER is not modified!
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下SQL查询:
update
T_ELEMENT elt
set elt.INSURER = (
select HEADER
from T_DEBTOR debtor
where
debtor.HEADER is not null
and debtor.ID_DEBTOR = elt.ID_DEBTOR);
Run Code Online (Sandbox Code Playgroud)
此查询适用于链接到具有HEADER非空的debtors的所有元素.但是,当T_DEBTOR.HEADER为null时,此查询将T_ELEMENT.INSURER设置为null,这是不正确的.
即:
If T_DEBTOR.HEADER != null
Then T_ELEMENT.INSURER = T_DEBTOR.HEADER --> This part is OK
Else T_ELEMENT.INSURER is set to null --> This part is …Run Code Online (Sandbox Code Playgroud)