在某些条件下从SQL的另一个表插入EXPLICITLY STATED值

时间:2018-10-10 03:19:48

标签: sql oracle oracle11g

我花了一些时间寻找,但找不到一个可以满足我要完成的任务的答案。

我想根据table1中的某些条件在table2中插入一些明确声明的值

逻辑如下:

INSERT INTO table1(col1, col2, col3)
VALUES(value1, value2, value3)
ONLY IF (SELECT attribute from table2 WHERE id=1) NOT LIKE 'A')

我需要显式插入值,而不是从其他表插入INSERT SELECT。真的很感激。

1 个答案:

答案 0 :(得分:3)

已编辑,已根据OP进行了说明。

insert into table1(col1, col2, col3)
  select value1, value2, value3
  from   dual
  where  (select attribute from table2 where id = 1) != 'A'; 

这假设table1恰好在id = 1的一行,而attribute不是null。对于稍微更一般的情况,其中可能没有id = 1行,或者有这样一行但属性可以是null,则可以这样编写where条件:

where nvl( (select attribute from table2 where id = 1), 'B' ) != 'A'