我有2张桌子: 表名为" Join_of_LIN_and_LI2"有两列如下:
Fcode | Description
103 |
4301 |
5200 |
和第二个表名为" Diam"有两列如下:
Fcode | Description
5200 | S Force Line
我想填补这个领域"描述"表" Join_of_LIN_and_LI2"使用字段的值"描述"表" Diam" 当字段" Fcode"表" Join_of_LIN_and_LI2"等于字段" Fcode"表" Diam"。
我应该使用哪种SQL语句? 我试过以下但是没有工作
UPDATE Join_of_LIN_and_LI2
SET Description = (SELECT Diam.Description
FROM Join_of_LIN_and_LI2
LEFT JOIN Diam ON Join_of_LIN_and_LI2.Fcode = Diam.Fcode;)
它给出了错误"操作必须使用可更新的查询"虽然我确信用户有权写入该文件。
由于
答案 0 :(得分:2)
您不需要为此使用子查询。您可以在UPDATE
查询中使用联接:
UPDATE Join_of_LIN_and_LI2
INNER JOIN Diam
ON Join_of_LIN_and_LI2.Fcode = Diam.Fcode
SET Join_of_LIN_and_LI2.Description = Diam.Description;
操作必须使用可更新的查询指的是查询不可更新的事实。这可能由于很多原因而发生,但在这种情况下,这是因为您正在使用子查询。
答案 1 :(得分:0)
您可以使用子查询,但它应该是相关的子查询:
UPDATE Join_of_LIN_and_LI2
SET Description = (SELECT Diam.Description
FROM Diam
WHERE Join_of_LIN_and_LI2.Fcode = Diam.Fcode
);
注意:这与JOIN
有两种不同。首先,如果没有匹配项,则会将Description
设置为NULL
。 JOIN
版本不会更改现有值。其次,如果Diam
中存在多个匹配项,则返回"子查询返回多个行"错误类型。