С помощью этого сообщества я смог создать запрос, используя внутреннее соединение, которое, как я думал, будет работать для того, что я пытаюсь сделать. К сожалению, когда я попытался выполнить запрос, указанный ниже, я получил следующую ошибку:
ОШИБКА: имя таблицы «bue» указано более одного раза
Из того, что я читал в Google, некоторые люди говорили, что «FROM bue» не требуется, но когда я удалил это, я получил еще одну ошибку, найденную ниже:
ОШИБКА: синтаксическая ошибка в или рядом с «INNER» на символе 98
Я очень благодарен вам за помощь в устранении этой проблемы. Огромное спасибо.
Запрос:
UPDATE bue SET rgn_no = chapterassociation.rgn_no, chp_cd = chapterassociation.chp_cd FROM bue INNER JOIN chapterassociation ON bue.work_state = chapterassociation.work_state AND bue.bgu_cd = chapterassociation.bgu_cd WHERE bue.mbr_no IS NULL AND bue.chp_cd IS NULL
В PostgreSQL указание таблицы, подлежащей обновлению, должно выполняться только в предложении UPDATE, например UPDATE bue
. Предложение FROM предназначено только для дополнительных таблиц, указанных в запросе. (Если вы делали самостоятельное присоединение к bue
, вы бы упомянули его снова в предложении FROM, но вы не в этом случае.)
Вторая ошибка, которую вы получаете, скорее всего, просто простая синтаксическая ошибка. Другая сложная вещь заключается в том, что синтаксис JOIN / ON не подходит в предложении FROM, поэтому вам нужно переместить условия соединения в предложение WHERE. Попробуйте что-нибудь вроде:
UPDATE bue SET rgn_no = chapterassociation.rgn_no, chp_cd = chapterassociation.chp_cd FROM chapterassociation WHERE bue.mbr_no IS NULL AND bue.chp_cd IS NULL AND bue.work_state = chapterassociation.work_state AND bue.bgu_cd = chapterassociation.bgu_cd
См. http://www.postgresql.org/docs/current/interactive/sql-update.html .
(NB По крайней мере, я не знаю, как включить JOIN / ON в инструкцию UPDATE … Я мог бы что-то упустить).