SQL简单更新声明

时间:2014-05-29 12:08:35

标签: sql ms-access sql-update

我有一个名为t_genopt的简单表格,其中有两列:OptionsAppliesTo

运行以下查询时出现语法错误:

UPDATE
    t_genopt
SET
    t_genopt.Option = 'trial'
WHERE
    t_genopt.AppliesTo LIKE 'VCConfigs'

有问题的地方在哪里?

3 个答案:

答案 0 :(得分:3)

根据您使用的DBMS,可以保留Option关键字。引用保留的名称。

在SQL Server和MSAccess中:

UPDATE
    t_genopt
SET
    [Option] = 'trial'
WHERE
    t_genopt.AppliesTo LIKE 'VCConfigs'

在MySQL中

UPDATE
    t_genopt
SET
    `Option` = 'trial'
WHERE
    t_genopt.AppliesTo LIKE 'VCConfigs'

答案 1 :(得分:2)

option是许多数据库中的保留字。您想要为此查询转义它。解决方案可能是:

UPDATE t_genopt
SET [Option] = 'trial'
WHERE t_genopt.AppliesTo LIKE 'VCConfigs';

UPDATE t_genopt
SET "Option" = 'trial'
WHERE t_genopt.AppliesTo LIKE 'VCConfigs';

UPDATE t_genopt
SET `Option` = 'trial'
WHERE t_genopt.AppliesTo LIKE 'VCConfigs';

更好的解决方案是避免将保留字用作列和表标识符。

答案 2 :(得分:0)

取出第二个t_genopt

UPDATE
    t_genopt
SET
    [Option] = 'trial'
WHERE
    t_genopt.AppliesTo LIKE 'VCConfigs'

任何UPDATE语句只会影响一个表,并且UPDATESET之间会识别要更新的表。没有必要(并且大多数数据库系统都不允许)在SET子句中的赋值左侧再次指定表。

(正如其他人观察到的那样,如果列名是Option,根据您的示例,而不是Options,根据您的叙述,您需要引用该用法)< / p>