带有 BETWEEN 运算符的 MySQL IF 语句,未显示为有效
Posted
技术标签:
【中文标题】带有 BETWEEN 运算符的 MySQL IF 语句,未显示为有效【英文标题】:MySQL IF statement with BETWEEN operator, not showing as valid 【发布时间】:2020-10-11 19:29:20 【问题描述】:谁能告诉我这个声明有什么不妥之处?我已经尝试了一些不同的变体,但没有一个显示为有效。我已经检查过,它说它应该是有效的,但不是。是不是因为 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== 1BETWEEN '1' AND '2', 112, 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;
【问题讨论】:
是在第二次更新中的列之前的需要之间,没有它是无效的 @nbk 谢谢。但第二个无效。根据以下内容, 无效 你的 updat1 工作得很好,就像你的数据库中有 column_1 和 field_1 一样,l,请不要将语法错误与其他错误混为一谈,并检查错误消息 我确实有一个字段 1 和一个列 1,但它实际上告诉我 是一个意外字符,整个查询旁边的红色 X 表示它不是有效的语法 看我的回答我添加了一个 dbfiddle 来向你展示它的工作原理,将 fiddle 更改为实验 【参考方案1】:正如我在评论中所说,您需要一个专栏
UPDATE mytablename SET column_2 = IF(column_1 BETWEEN '1' AND '2', new_value, field_1) WHERE id=1;
new_vaue 只是一个占位符,您必须填写一个值或 cloumn 见下文
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
编号 | column_2 |字段_1 -: | --------: | ------: 1 | 12 | 1SELECT * FROM mytablename
db小提琴here
【讨论】:
谢谢。根据 MYphpADMIN,这显示为无效。我什至无法运行查询。它告诉我 无效 newvalue 当然有效,必须有列或值 好的,谢谢。我当然添加了值,它告诉我任何带有 的东西都是无效的。我当然填写了所有内容 好,那你应该有任何错误了。请不要忘记accept it 您的查询不是无效的,但您的数据库必须有一个 columname field_1 和一个 column_1【参考方案2】:(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_1
和1
。如果它们相等,则该操作的结果为1
,否则为0
。然后它检查0
或1
是否在1
和2
之间。
我猜你想要的是if(column_1 BETWEEN 1 AND 2, ...)
【讨论】:
谢谢。我在上面更新,因为它仍然显示无效。也许我误解了,.... @Mikey;...
只是其余代码的占位符。您必须用 if()
的任何第二和第三个参数替换它们。
我在上面更新了我想在那里有任何其他参数,只需要在满足条件时设置结果,但你说上面的设置是无效的。因此,设置条件 IF x 的有效代码是什么?
@Mikey: if()
接受三个参数。所以你需要另外两个参数......
没有三个参数怎么办?我见过许多只有一个论点的例子。我错过了什么?我要做的就是更新一个值,如果 column_1 的值介于 1 和 2 之间以上是关于带有 BETWEEN 运算符的 MySQL IF 语句,未显示为有效的主要内容,如果未能解决你的问题,请参考以下文章
使用 mySQL 运算符 BETWEEN 和经典日期间隔之间有啥区别? [复制]