我正在进行示例演示以及我得到的结果。
+-------+----------
name status
+-------+----------
Subha 1
Rajeeb 2
Rahul 3
+-------+----------
状态字段的类型是ENUM。
当我试图获得ENUM的结果时:
select name, status+0 from demo;
我的名字和状态为2和3而不是1.我还尝试过IN(0,2)
和status=2
次查询。
答案 0 :(得分:0)
您可以像这样使用Query
:
SELECT `name` FROM `demo` WHERE `demo`.`status` = 1
你的名字在status is 0
。
如果你想获得状态为1和2的数据,你只需添加条件如下:
WHERE (`demo`.`status` = 1 OR `demo`.`status` = 2)
答案 1 :(得分:0)
Enum
值可以使用'
单引号进行比较,如:
SELECT `name` FROM `demo` WHERE `demo`.`status` = '1'
或
SELECT `name` FROM `demo` WHERE `demo`.`status` IN('11, '2')
答案 2 :(得分:0)
原因是,enum的内部数据类型为tinyint(从0开始),当你在where子句中使用status时。 status = 0会使where子句返回false。
看看这个场景:
SELECT `name`, `status` FROM `demo` WHERE `demo`.`status` = 0
这使得where条件不满意并且没有返回结果。
在status = 1或2中,返回满意和相应的行 解决方案:
SELECT `name`, `status` FROM `demo` WHERE `demo`.`status` > -1