相关疑难解决方法(0)

根据另一个表删除表中的所有行

我似乎永远不记得这个查询!

我想删除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做这个查询.

sql

67
推荐指数
6
解决办法
16万
查看次数

我在Oracle中加入的更新语句出了什么问题?

我正在使用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)

sql oracle sql-update

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

sql ×2

oracle ×1

sql-update ×1