使用另一个表

时间:2018-03-15 08:57:34

标签: sql ms-access

我有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;)

它给出了错误"操作必须使用可更新的查询"虽然我确信用户有权写入该文件。

由于

2 个答案:

答案 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设置为NULLJOIN版本不会更改现有值。其次,如果Diam中存在多个匹配项,则返回"子查询返回多个行"错误类型。