我试图创建一个查询来更新多个记录,并错误地写了错误的版本,但它运行没有任何错误.
错误的版本:update table SET c1=1 AND c2=2.
任何人都可以解释它做了什么,为什么不失败.
我猜:
update table SET c1=1 AND c2=2
Run Code Online (Sandbox Code Playgroud)
被翻译成:
update table
SET c1 = (1 AND c2=2)
Run Code Online (Sandbox Code Playgroud)
然后计算表达式(1 AND c2=2)并隐式转换表达式以更新字段c1.
所以,例如,如果你的表看起来像这样:
create table mytable (c1 int, c2 int);
insert into mytable values
(1, 3),
(2, 1),
(3, 2);
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT c1, c2, 1 AND c2=2 AS expr
FROM mytable
Run Code Online (Sandbox Code Playgroud)
收益:
c1, c2, expr
------------
1, 3, 0
2, 1, 0
3, 2, 1
Run Code Online (Sandbox Code Playgroud)