Informix - где предложение с объединением в - PullRequest
0 голосов
/ 13 марта 2019

Я использую Informix Dynamic Server Version 12.10.FC9W1X2.

Мне нужно обновить таблицу с полями из другой таблицы.Я пытаюсь использовать оператор

MERGE INTO 

, но я не могу использовать WHERE CLAUSE для фильтрации информации из обновляемой таблицы, поскольку она вызывает синтаксическую ошибку.Я также попытался добавить AND к WHEN MATCHED, и он не работает.

Есть ли способ сделать это?

Это мое утверждение до сих пор,

MERGE INTO table1 as t1
USING table2 as t2
   ON t1.some_no = t2.some  
WHEN MATCHED   
    THEN 
UPDATE SET t1.some_other_no = t2.some_other_no, is_processed = 'Y', resolution = 'AAA'

1 Ответ

3 голосов
/ 13 марта 2019

Дополнительные фильтры в таблице1 могут быть размещены в предложении ON.Например:

create table t1(col1 int, col2 int, col3 int);

insert into t1 values(1,1,1);
insert into t1 values(1,2,0);
insert into t1 values(1,3,0);
insert into t1 values(2,1,0);
insert into t1 values(3,1,1);

create table t2 (col1 int, col2 int);

insert into t2 values(1,5);
insert into t2 values(2,5);
insert into t2 values(3,5);


merge into t1
using t2
on
    t1.col1 = t2.col1
AND t1.col3 = 1
when matched then
    update set t1.col2 = t2.col2;

The above results in the following output when selecting from the t1 table

       col1        col2        col3

          1           5           1
          1           2           0
          1           3           0
          2           1           0
          3           5           1
...