如何获取枚举查询

How to get query for enum

所以我这里有一个 table 和 isAdmin 和 isTeacher 的列

isAdmin 和 isTeacher 的数据类型是 enum(0,1)。

id  Name    isAdmin    isTeacher

1   Admin      1          0

2  Teacher      0          1

3  Student     0          0

当我执行这个查询时:

  SELECT * FROM users where isAdmin = 1 and isTeacher = 1

它让我

   Student **(assuming isAdmin = 0 and isTeacher =0)**

(不知道为什么显示那个记录o__o)

现在,我想找到 isTeacher,

我尝试了这些查询...

  SELECT * FROM users where isAdmin = 1 and isTeacher = 1 and isAdmin = 0 

(无结果)

  SELECT * FROM users where isAdmin = 1 and isTeacher = 1 and isTeacher = 0

(无结果)

  SELECT * FROM users where   isTeacher = 0 (it gets me the Admin and Student)

请帮忙? @_@

使用枚举类型时,您应该使用字符串值整数索引.

假设您的(实际)字段声明是

...
isAdmin enum ('0','1'),
isTeacher enum ('0','1')
...

您的查询

SELECT * FROM users where isAdmin = 1 and isTeacher = 1

将 return 记录 isAdmin 字段值等于“0”(索引为 1 的值),与 isTeacher.

相同

如果您需要按值而不是索引进行过滤,您应该使用字符串值:

SELECT * FROM users where isAdmin = '1' and isTeacher = '1'

此查询将 return 也是教师的管理员(您的示例数据不包含这些)。

N.B。第 0 个索引标识 NULL 值。
有关完整参考,请参阅 docs

这三个类别是否相互排斥?如果是这样,请使用

category ENUM('admin', 'teacher', 'student') NOT NULL

并使用

进行测试
WHERE category = 'student'

(等)。更简单。更清晰。