Обновить запрос с внутренним объединением - использовать обновленное значение столбца для другого столбца той же таблицы - PullRequest
0 голосов
/ 06 июня 2019

Я хочу обновить один столбец valur из другого обновленного столбца в той же таблице с тем же запросом SQL.В запросе на обновление объединены 3 таблицы, как показано ниже:

UPDATE table1
     INNER JOIN table2 ON table2.id = table1.pid
     INNER JOIN table3 ON table3.id = table2.cid
SET 
    table1.col1 = "1+2+3",
    table1.col2 = table1.col1 + 5
WHERE 
    table1.id = 5

Любая помощь приветствуется

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Согласно вашему комментарию, если вы хотите обновить new_value в столбцах Col1 и Col2, вы можете использовать следующий блок обновления

UPDATE table1
     INNER JOIN table2 ON table2.id = table1.pid
     INNER JOIN table3 ON table3.id = table2.cid
SET 
    table1.col1 = new_value,
    table1.col2 = new_value
WHERE 
    table1.id = 5
0 голосов
/ 06 июня 2019

Вам необходимо указать таблицу в операторе SET, так как поля неоднозначны.

UPDATE table1
  INNER JOIN table2 ON table2.id = table1.pid
  INNER JOIN table3 ON table3.id = table2.cid
----- (Option1 - Shifting values in a single table) -----  
SET  
  table1.col1 = table1.col2,
  table1.col2 = table1.col3,
  table1.col3 = table1.col4
----- (Option2 - Assigning values across tables) -----
SET
  table1.col1 = table2.col2,
  table2.col1 = table3.col2,
  table3.col1 = table1.col2
----- (Option2 - Updating values across tables) -----
SET
  table1.col1 = table1.col2 + 1,
  table2.col1 = table2.col2 - 1,
  table3.col1 = table3.col2 + table3.col1
WHERE
  table1.id = 5

NB: SET commands are done in the order listed so may you need to swop the two lines around in the set to get what you want.

SET
  table1.col2 = table1.col1 + 5,
  table1.col1 = "1+2+3"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...