【问题标题】:How to make an update query using join?如何使用连接进行更新查询?
【发布时间】:2022-06-22 18:46:25
【问题描述】:

我正在尝试为 2 个表编写更新查询,但遇到错误,您能帮忙吗?

我正在使用 postgresql 我正在使用带有 golang 的 sqlc。

UPDATE categories 
SET c.slug = $1, tx.name = $2, tx.description = $3 
FROM categories c
JOIN categories_translations tx ON c.id = tx.category_id 
WHERE c.id = $4 AND tx.category_id = $4 AND tx.language_code = $5;

【问题讨论】:

  • 您尚未指定您遇到的错误,但知道这一点,无论您执行多少次连接,您都不能使用单个 UPDATE 更新多个表。另请注意,SET 的列必须是不合格的,即c.slug 无效,slug 有效。
  • 更新类别 SET slug = $1, name = $2, description = $3 FROM categories c JOIN categories_translations tx ON c.id = tx.category_id WHERE c.id = $4 AND tx.category_id = $4 AND tx .language_code = $5;

标签: sql postgresql go sqlc


【解决方案1】:

带有JOIN 的PostgreSQL UPDATE 语句的语法不使用JOIN 关键字。尝试以下方法:

UPDATE categories 
SET c.slug = $1, 
    tx.name = $2, 
    tx.description = $3 
FROM categories_translations tx 
WHERE c.id = tx.category_id 
  AND c.id = $4 
  AND tx.category_id = $4 
  AND tx.language_code = $5;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多