我有一個表引用城市表與一個名爲cityId
的鍵。 我取使用此查詢從它的數據:左連接過濾空值與自定義函數在哪裏
SELECT t.ID, city.areaId FROM transp t
LEFT JOIN city ON city.ID = t.cityId;
這樣,原樣返回表,與空的city.areaId
如果cityId
爲null。
但是,當我將函數添加到使用city.areaId
的where子句時,即使函數始終爲true,查詢也不會顯示其中cityId
爲空的行。例如:
SELECT t.ID, city.areaId FROM transp t
LEFT JOIN city ON city.ID = t.cityId
WHERE always_true(city.areaId);
不會顯示任何空行cityId
。我不明白爲什麼會發生這種情況,因爲我使用的是left join
,如果我將該函數放入SELECT中,我可以看到它確實總是如此。
看起來像MySQL的錯誤。它在'where'如'1 = 1'的表達式中表現正確。 –
您能發送一個鏈接到正確的行爲在sqlfiddle中使用1 = 1嗎?我不能重複, – smartDonkey
是的,這種行爲是非常奇怪的。我希望這兩個記錄都能顯示出來。把它作爲一個MySQL錯誤提出來,看看MySQL開發者提出的答案是值得的。 – Shadow