Проблема с обновлением и подзапросом.один ко многим - PullRequest
0 голосов
/ 14 февраля 2019

Я получаю следующее имя обновления таблицы ошибок моей таблицы при выполнении этого запроса:

update t1 set t1.DIST_= (SELECT SUM(t2.amount) as DIST_ FROM t2
                         WHERE unique_number =300291 and t2.reseller_id ='31')

у меня есть 2 таблицы (t1 и t2), t1 имеет столбец DIST_ и unique_number, а 1 строка t2 имеет много строки сумма столбца, уникальный_номер, reseller_id

Этот запрос должен рассчитать сумму из таблицы t2 с t2.reseller_id = '31 'и записать значение в t1.DIST_ по уникальному_number

Теперь запрос изменяет значенияиз всех столбцов таблицы, но мне нужно обновить только столбец, где t2.unique_number = t1.unique_number

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

попробуйте, как показано ниже, используя join

   UPDATE TABLEA t1 
       JOIN (SELECT unique_number,SUM(t2.amount) as DIST_ FROM table2
            group by unique_number
            ) t2 ON t2.unique_number=t1.unique_number
       SET t1.DIST_ =t2.DIST_
0 голосов
/ 14 февраля 2019

Вам нужно предложение WHERE в операторе UPDATE:

update t1 set t1.DIST_= (SELECT SUM(t2.amount) as DIST_ FROM t2
                         WHERE unique_number =300291 and t2.reseller_id ='31')
where t1.unique_number = 300291

Если вы хотите обновить все строки t1 до соответствующей суммы из t2, присоединитесь к подзапросукоторый группирует их.

update t1
JOIN (SELECT unique_number, SUM(amount) AS DIST_
      FROM t2
      WHERE reseller_id = '31'
      GROUP BY unique_number) AS t2
ON t1.unique_number = t2.unique_number
SET t1.DIST_ = t2.DIST_
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...