Обновить запрос с помощью sub-select - PullRequest
0 голосов
/ 15 мая 2018

x_addr_table1

Address_id,member_id,Primary,email1
7000012  56781    1     abcdef@gmail.com
7000013  56781    0     dummy@gmail.com
7000014  56781    0     abcdef@gmail.com
7000015  56782    1     mnopqr@gmail.com
7000016  56782    0     XYZXYZ@gmail.com
7000017  56782    0     mnopqr@gmail.com

Я пытался обновить электронные письма в приведенной выше таблице, где электронные письма участников отличаются от других.

Я пытаюсь достичь этого путем создания 2 временных таблиц.

x_primary_email_table2

Address_id,member_id,priemail1
7000012  56781  abcdef@gmail.com
7000015  56782  mnopqr@gmail.com

x_profilepay_email_table3

Address_id,member_id,payemail1
7000013  56781  dummy@gmail.com
7000016  56782  XYZXYZ@gmail.com

Вот мой запрос на обновление:

update x_addr_table1 x_addr 
set email1=(
  select T2.priemail1 
  from x_primary_email_table2 T2 
  where T2.member_id=x_addr.member_id
)
where x_addr.address_id in (
  select T2.address_id from x_primary_email_table2 T2
) and x_addr.member_id in (
  select T2.member_id 
  from x_primary_email_table2 T2, x_profilepay_email_table3 t3 
  where t2.member_id=t3.member_id and   
  upper(T2.priemail1)!=upper(T3.payemail1)
)

Я получаю ошибку здесь:

DB21034E Команда была обработана как оператор SQL, потому что она была недопустимая команда процессора командной строки. Во время обработки SQL это возвращено: SQL0811N Результат скалярной полной выборки, SELECT INTO оператор или оператор VALUES INTO - это несколько строк. SQLSTATE = 21000

Ценю помощь.

1 Ответ

0 голосов
/ 15 мая 2018

Вы можете сделать это прямо на исходной таблице

update x_addr_table1 x
   set email = (select email 
                  from x_addr_table1 
                 where member_ID = x.member_id  and primary = 1)
 where Primary = 0
   and email <> (select email 
                  from x_addr_table1 
                  where member_ID = x.member_id  and primary = 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...