我有簡單的MySQL表(簡化了此問題):爲什麼mysql在WHERE條件中與任何字符串匹配NULL值?
table A - id int, name varchar(255), id_b int
table B - id int, name varchar(255)
我具有表A這些值:
1, 'a1', 10
2, 'a2', 11
3, 'a3', 12
我在表B中這些值:
21, 'b1'
22, 'b2'
23, 'b3'
我有這個查詢:
SELECT A.name, (SELECT B.name FROM B WHERE B.id = A.id_b) AS name_ext FROM A WHERE name_ext = 'something';
我期望得到空的結果,但是相反,我從表A中獲得了全部3行,值爲name_ext
,其值爲NULL。這怎麼可能 ?我該如何獲得預期的結果?
非常感謝您的幫助。
這個查詢甚至不應該編譯。我想你簡化得太多了。您不能在'where'子句中使用別名 –
@juergend然後'A'必須有一個名爲'name_ext'的列。但是OP顯示了A的(簡化的)定義。因此,這個問題在轉錄中可能是一個錯誤。 –
對不起,我在簡化查詢時犯了錯誤。然後我發現原始查詢中存在什麼問題,但與此問題無關,因此我將其標記爲刪除。謝謝大家的努力 – Frodik