[英]“Optional” WHERE clause on (My)SQL query
我在MySQL中遇到一個SELECT查詢有點問題,我會感謝你的一些指示。 請隨時指出我現有的答案(如果有的話我錯過了)。
查詢目前如下:
SELECT e.*, ie.aaa, ue.bbb, ue.ccc
FROM ie
LEFT JOIN e ON ie.e_id = e.e_id
LEFT JOIN ue ON ie.e_id = ue.e_id
WHERE ie.other_id = ? AND ue.unrelated_id = ?
ORDER BY ...
有三個表: 即 e和ue 。
表ie和ue是e的關系,因此包含外鍵(e_id)。 ? 表示輸入參數。
問題是ue.unrelated_id =? 部分。 我真正想做的是:
不幸的是,如果我刪除這個where子句,我會得到ue.ccc的“隨機”unrelated_id。 但是如果我保留它,如果這個unrelated_id不存在,查詢將不會返回任何結果! 我也嘗試添加OR ue.unrelated_id IS NOT NULL,但如果ue表為空,這會使查詢返回結果。
有任何想法嗎? 如果您需要進一步說明,請發表評論。 我應該在接下來的幾個小時內迅速回答。
你可以做兩件事之一:
SELECT e.*, ie.aaa, ue.bbb, ue.ccc
FROM ie
LEFT JOIN e ON ie.e_id = e.e_id
LEFT JOIN ue ON ie.e_id = ue.e_id AND ue.unrelated_id = ?
WHERE ie.other_id = ?
ORDER BY ...
要么
SELECT e.*, ie.aaa, ue.bbb, ue.ccc
FROM ie
LEFT JOIN e ON ie.e_id = e.e_id
LEFT JOIN ue ON ie.e_id = ue.e_id
WHERE ie.other_id = ? AND (ue.unrelated_id IS NULL OR ue.unrelated_id = ?)
ORDER BY ...
不過,我會選擇第一個查詢。
編輯:請注意,如果ue.unrelated_id
不是可空列,則第二個查詢僅適用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.