如何解决带BETWEEN运算符的MySQL IF语句,未显示为有效
有人可以告诉我此陈述的无效之处吗?我已经尝试了几种不同的方法,但是没有一种方法是有效的。我已经检查过SO,它说它应该有效,但不是。是由于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_1
和1
。如果它们相等,则该操作的结果为1
,否则为0
。然后,它检查0
或1
是否在1
和2
之间。
我想你想要的是if(column_1 BETWEEN 1 AND 2,...)
正如我在评论中所说,您需要一列
0x779
{new_vaue}只是一个占位符,您必须使用下面的值或cloumn填充
UPDATE mytablename SET column_2 = IF(column_1 BETWEEN '1' AND '2',{new_value},field_1) WHERE id=1;
示例
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,1)
UPDATE mytablename SET column_2 = IF(field_1 BETWEEN 1 AND 2,12,field_1) WHERE id = 1
id | column_2 | field_1 -: | -------: | ------: 1 | 12 | 1
db 提琴merge
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。