2014-09-25 159 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