MySQL 带有 BETWEEN 运算符的 IF 语句未显示为有效

MySQL IF statement with BETWEEN operator, not showing as valid

谁能告诉我这个声明有什么地方是无效的?我已经尝试了几个不同的变体,但 none 显示为有效。我已经检查过,它说它应该有效但不是。是因为BETWEEN条件吗?

UPDATE mytablename SET column_2 = IF({BETWEEN '1' AND '2'}, {new_value}, field_1) WHERE id=1

UPDATE mytablename SET column_2 = IF(column_1== 1{BETWEEN '1' AND '2'}, 1{12}, field_1) WHERE id=1

更新 1 我在下面尝试过这个但是无效的结果相同 -

UPDATE mytablename SET column_2 = IF(field_1 BETWEEN 1 AND 2, 12, field_1) WHERE id = 1

更新 2 我也试过这个但它也是无效的:

UPDATE mytablename SET column_2 = 12 IF(field_1 BETWEEN 1 AND 2) WHERE id = 1

更新 3 也无效。意外的“{”:

UPDATE mytablename SET column_2 = IF(field_1 BETWEEN '1' AND '2', {12}, column_2 ) WHERE id=1;

(a) 大括号不属于那里。

(b) 如果字面值是整型字面量,请不要用单引号将它们括起来。

(c) 在(标准)SQL 中,比较运算符是 = 而不是 ==。 MySQL 可能会接受后者,但如果您使用 =.

,您的代码将变得更加可移植

(d) 你需要一个操作数来检查。所以语法是 operand_to_check BETWEEN operand_lower_bound AND operand_upper_bound.

因此 if(BETWEEN 1 AND 2, ...) 是错误的。

if(column_1 = 1 BETWEEN 1 AND 2, ... 在技术上是可以的,但可能不会达到您的预期。它所做的是首先比较column_11。如果它们相等,则该操作的结果为 1,否则为 0。然后它检查 01 是否在 12 之间。

我猜你想要的是if(column_1 BETWEEN 1 AND 2, ...)

正如我在评论中所说,您需要一个专栏

UPDATE mytablename SET column_2 = IF(column_1 BETWEEN '1' AND '2', {new_value}, field_1) WHERE id=1;

{new_vaue} 只是一个占位符,您必须用值或列填充,见下文

UPDATE mytablename SET column_2 = IF(column_1 BETWEEN '1' AND '2', 5, field_1) WHERE id=1;

UPDATE mytablename SET column_2 = IF(column_1 BETWEEN '1' AND '2', coumn3, field_1) WHERE id=1;

例子

CREATE TABLE mytablename(id int,column_2 int, field_1 int);
INSERT INTO mytablename VALUES (1,0,1)
UPDATE mytablename SET column_2 = IF(field_1 BETWEEN 1 AND 2, 12, field_1) WHERE id = 1
SELECT * FROM mytablename
id | column_2 | field_1
-: | -------: | ------:
 1 |       12 |       1

db<>fiddle here