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

时间:2018-03-28 14:08:12

标签: mysql sql

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

错误的版本:public int getIndexIfStartsWith(String str){ for(int index = 0; index < models.size(); index++){ if(str.startsWith(CommonUtils.padLeft(models.get(index).getKey(), 2))){ return index; } } return -1; }

任何人都可以解释它的作用以及它为什么不会失败。

1 个答案:

答案 0 :(得分:5)

我想:

update table SET c1=1 AND c2=2

被翻译为:

update table 
SET c1 = (1 AND c2=2)

然后评估并隐式转换表达式(1 AND c2=2)以更新字段c1

因此,例如,如果您的表格如下所示:

create table mytable (c1 int, c2 int);

insert into mytable values
(1, 3),
(2, 1),
(3, 2);

查询:

SELECT c1, c2, 1 AND c2=2 AS expr
FROM mytable

返回:

c1, c2, expr
------------
1,  3,  0
2,  1,  0
3,  2,  1

Demo here