SQL"SET a = 1 AND b = 2"是什么意思

Var*_*Agw -1 mysql sql

我试图创建一个查询来更新多个记录,并错误地写了错误的版本,但它运行没有任何错误.

错误的版本:update table SET c1=1 AND c2=2.

任何人都可以解释它做了什么,为什么不失败.

Gio*_*sos 5

我猜:

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)

在这里演示