我有一个名为t_genopt
的简单表格,其中有两列:Options
和AppliesTo
。
运行以下查询时出现语法错误:
UPDATE
t_genopt
SET
t_genopt.Option = 'trial'
WHERE
t_genopt.AppliesTo LIKE 'VCConfigs'
有问题的地方在哪里?
答案 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
语句只会影响一个表,并且UPDATE
和SET
之间会识别要更新的表。没有必要(并且大多数数据库系统都不允许)在SET
子句中的赋值左侧再次指定表。
(正如其他人观察到的那样,如果列名是Option
,根据您的示例,而不是Options
,根据您的叙述,您需要引用该用法)< / p>