我有一個查詢四個表。爲了便於閱讀,我將表格名稱更改爲t
,將顏色更改爲col
。爲什麼我的AND或WHERE子句不起作用?
如果我不添加倒數第二行,則查詢按照應該的方式運行。尼斯。
但是,當我想排除其中col4
的值爲x
的條目時,它不起作用。當使用AND ...
它似乎只是忽略了AND ...
。在使用WHERE ...
時,我得到一個空的結果。
SELECT t1.col1,
t2.col2,
t3.col3,
t4.col4
FROM t2ble1 t1
LEFT JOIN t2ble2 t2
ON t1.col1 = t2.col1
LEFT JOIN table3 t3
ON t3.col1 = t1.col1
LEFT JOIN table4 t4
ON t4.col1 = t1.col1
AND t4.col4 <> "x"
LIMIT 10;"
要排除我可能會在數據庫中太多x
我LIMIT
將跳過他們的錯誤,我只是有x
一個記錄。當使用AND ...
時,仍會顯示值爲x
的此記錄。
可能有人請向我解釋我的錯誤在哪裏排除記錄col4 = "x"
?
對於澄清:
我想從t1
來選擇。該數據應該在結果中顯示1倍。從t1
行從t2
和t3
得到附加數據(總是通過一個連接ID和每個t1
只有一行 - 行)。如果t4.col4 = "x"
那麼整行不應該在結果中。
exampleT1 | exampleT2 | exampleT3 | asdf
- >是
exampleT1 | exampleT2 | exampleT3 | x
- >沒了
第二個編輯:
如果我不把任何WHERE /,並與X/blablabla,這是結果(見最正確的coloumn這mischievious x):
當我使用X排除,我只是得到NULL - 但我想整個行消失:
正如目前所寫,當col4爲「x」時,到t4的連接將失敗,但所有其他連接仍可能成功。如果將其更改爲'WHERE'子句,則隱式地將該LEFT JOIN更改爲INNER JOIN,而該值又不是「x」。目前還不清楚col4中的NULL是否在結果集中,或者不是? – 2014-11-21 15:12:29
你確定t4.col4中沒有特殊字符或空格嗎?如果你設置了它,會發生什麼=「x」你有沒有得到任何記錄?或「X」是否區分大小寫?我的猜測是工作正常,列中的數據不符合你的期望。 – xQbert 2014-11-21 15:17:34
將它切換到'='並不會改變結果的任何內容 - 我還查找了大小寫敏感的東西。所以我認爲Rowland是正確的...澄清:'t4'中不必有任何記錄符合 - 這就是爲什麼我得到了'LEFT JOIN'。但如果't4'中有記錄,我希望整行不會顯示在結果中。 – Trollwut 2014-11-21 15:20:10