如果name中的字符串包含来自PostgreSQL中不同表的值,则我希望将字段更新为不同的值:
需要更新的表类型
id | name | type
1 | Google Page | WEBSITE
2 | Yahoo Page | WEBSITE
3 | Facebook Page | WEBSITE
...表Companies,其名称为
id | name
1 | Google
2 | Yahoo
3 | Facebook
4 | Twitter
5 | Stackoverflow
...我试过的
UPDATE types
SET type = 'BUSINESS'
WHERE name LIKE CONCAT((SELECT companies.name from companies), '% Page')但我得到了这个问题:[21000] ERROR: more than one row returned by a subquery used as an expression
发布于 2021-07-14 23:49:39
您可以使用带有现有逻辑的子查询来保留当前逻辑:
UPDATE types t
SET type = 'BUSINESS'
WHERE EXISTS (SELECT 1 FROM companies c
WHERE CONCAT(c.name, ' Page') = t.name);您还可以使用update联接:
UPDATE types t
SET type = 'BUSINESS'
FROM companies c
WHERE t.name = CONCAT(c.name, ' Page');https://stackoverflow.com/questions/68386156
复制相似问题