[英]SQL Simple Update Statement
我有一个名为t_genopt
的简单表, t_genopt
有2列: Options
和AppliesTo
。
运行以下查询时出现语法错误:
UPDATE
t_genopt
SET
t_genopt.Option = 'trial'
WHERE
t_genopt.AppliesTo LIKE 'VCConfigs'
有问题的地方在哪里?
根据所使用的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'
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';
更好的解决方案是避免使用保留字作为列和表标识符。
取出第二个t_genopt
:
UPDATE
t_genopt
SET
[Option] = 'trial'
WHERE
t_genopt.AppliesTo LIKE 'VCConfigs'
任何UPDATE
语句只能影响一个表,并且要更新的表在UPDATE
和SET
之间标识。 无需(并且在大多数数据库系统中都是不允许的)在SET
子句中分配的左侧再次指定表。
(而且,正如其他人所观察到的那样,如果列名根据您的示例为Option
,而不是根据您的叙述的Options
,则需要引用该用法)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.