2014-09-25 83 views
0

在编写查询时, 我在给where条款中的teacher,然后执行coteacher, 它不显示任何记录。当我反转这个命令(第一次写coteacher,然后是老师)时,它列出了这两个记录。MySQL混淆查询

role_name没有索引,表引擎是INNODB。 这是为什么?

SELECT * 
FROM role 
WHERE role.role_name = 'coteacher' 
    OR role.role_name = 'teacher' 
+6

我不能复制这种行为...... http://www.sqlfiddle.com/#!2/25ac3/1 – Strawberry 2014-09-25 11:29:46

+0

请出示代码的确切位这是行不通的(IE不是上面的工作)。 – Giles 2014-09-25 11:33:27

+0

我会尝试从角色中选择不同的role_name来查看实际可用的值。这可能是一个大小写敏感的问题吗? – DRapp 2014-09-25 11:43:09

回答

1

我不完全得到的问题,而是你有没有试过这样:

SELECT * 
FROM role 
WHERE role.role_name IN ('coteacher', 'teacher') 

+0

是的!我试过了,它只返回一个记录教师 – 2014-10-27 05:14:49

0

你尝试下面的查询:

SELECT * FROM role WHERE (role.role_name = 'coteacher' OR role.role_name = 'teacher') 
+0

您的解决方案与作者提供的查询完全相同......圆括号在这里没用。 – 2014-09-25 11:46:58