Ошибка синтаксиса внутреннего соединения при выполнении перегонного куба

#sql #postgresql #alembic

Вопрос:

У меня есть "DevAssociation" таблица со столбцами prod_id , и dev_id где dev_id находится fk DevRun , я хотел бы перейти prod_id в DevRun таблицу, поэтому я создал новый столбец в DevRun called prod_id . Затем я выполняю следующую команду SQL для перемещения prod_id данных. Я делаю это alembic на Python, но я чувствую, что там, где это не удается, в более общем плане связано с sql.

 conn.execute('UPDATE "DevRun"  INNER JOIN "DevAssociation"   ON "DevAssociation".dev_id= "DevRun".id   SET prod_id="DevAssociation".prod_id')  

Я получаю следующую ошибку

 sqlalchemy.exc.ProgrammingError: (psycopg2.errors.SyntaxError) syntax error at or near "INNER" LINE 1: UPDATE "DevRun" INNER JOIN "DevAssociation" O...  ^  [SQL: UPDATE "DevRun" INNER JOIN "DevAssociation" ON "DevAssociation".dev_id= "DevRun".id SET prod_id="DevAssociation".prod_id]  

Есть идеи, почему? Это на postgresql.

Ответ №1:

обновление в postgresql на основе другой таблицы выглядит следующим образом:

 UPDATE "DevRun" SET prod_id="DevAssociation".prod_id FROM "DevAssociation" WHERE "DevAssociation".dev_id= "DevRun".id