postgreSQL:使用JOIN和UPDATE用另一个表中的数据更新一个表

时间:2015-04-21 14:31:09

标签: sql postgresql sql-update

我试图做一些我认为很简单的事情,但这让我很难过。

我有一张家具表,其中包括一个名为" category" (床,椅子,桌子等)和类别表,它们将这些类别中的每一个在名为categoryname的列中与categoryID配对(这是在团队成员的请求下添加的,以便于搜索)。

我想根据家具表中的类别列和类别表中的categoryname列之间是否匹配来填充家具表中具有这些categoryID的列。

在这个网站和其他地方搜索后,我决定试试这个:

UPDATE furniture
SET categoryid = categories.categoryid
FROM categories
WHERE categories.categoryname = furniture.category

哪个运行,但没有任何反应。

我假设它是因为WHERE语句不足以克服我尝试做的事情,我需要某种JOIN语句来明确链接categoryname列在家具表中的类别列的类别表中,但我如何将其合并?基于对他人有用的最佳猜测是这样的:

UPDATE furniture
INNER JOIN categories ON categories.categoryname = furniture.category
SET furniture.categoryid = categories.categoryid
WHERE categories.categoryname = furniture.category

但它只是给我语法错误。

(我已经检查过以确保类别名称和类别列在拼写等方面匹配)

2 个答案:

答案 0 :(得分:2)

试一试

UPDATE f
SET 
    categoryid = c.categoryid
from furniture f
INNER JOIN categories c ON c.categoryname = f.category

你能再次复制吗?

答案 1 :(得分:2)

您应该尊重这种语法:

UPDATE furniture
SET furniture.categoryid = categories.categoryid
INNER JOIN categories ON categories.categoryname = furniture.category
WHERE categories.categoryname = furniture.category