【发布时间】:2020-03-30 18:48:58
【问题描述】:
我有 2 个表,我正在尝试使用第二个表中的数据更新其中一个列中的一列。我的SQL如下:
UPDATE
table_one
SET
contents = CONCAT('https://someurl.com/', table_one.id, '.', split_part(T2.file_name, '.', 2))
FROM
table_one T1
JOIN
table_two T2
ON
T1.id = T2.image_id
WHERE
T1.kind IN ('image')
我要做的是获取表table_two 的file_name 列的值,并将其插入table_one 的contents 列中,以获取给定的ID 和类型“图像” table_1 的列。所以更新应该只对 kind='image' 的记录进行。split 和 concat 部分是为了获取文件的扩展名。
这可行,但它会更新所有条目,而不考虑设置为“图像”的种类。此外,它似乎获得了所有相同的值,因为所有扩展都设置相同。
谁能指出我做错了什么?
更新:我正在使用 Postgres。
谢谢。
【问题讨论】:
-
您使用的是哪个 dbms?
-
您好,我怀疑问题是您没有使用更新的别名,如下面的 UPDATE T1 SET T1.contents = CONCAT('someurl.com', T1.id, '.', split_part(T2.file_name, '.', 2)) FROM table_one T1 JOIN table_two T2 ON T1.id = T2.image_id WHERE T1.kind IN ('image')
-
请阅读
sqltag text,然后用您正在使用的RDMS标记您的问题,提供示例数据、当前输出和所需输出。 -
我正在使用 Postgres。
标签: sql postgresql join sql-update