我有一個簡單的用戶偏好表看起來像這樣:僅當非空值不存在時才選擇空位?
id | user_id | preference_name | preference_value
是什麼讓這個獨特的表雖然是如果USER_ID字段爲空,這意味着它是針對偏好的默認值。我試圖獲得用戶的所有首選項,並且只有在沒有爲該用戶指定實際值的情況下才使用默認值。
所以基本上我需要:
SELECT * FROM user_preferences WHERE user_id = {userIdVar} OR user_id IS NULL;
,但我想拋出了一個user_id是空的結果,如果沒有在結果與同PREFERENCE_NAME和user_id的值設置另一行。
有沒有辦法做到這一點與單個SQL查詢,或者我應該這樣做的代碼?
在MySQL子查詢往往是資源密集型的,也許SQL-Server有優化,使得該子查詢是首選。我會選擇在一個子查詢代替直接選擇'FROM user_preferences'和走樣,所以你可以用自己加入它的默認值。 – funkwurm
@funkwurm謝謝,會編輯。 – hvd
這會返回錯誤的結果!看到我的答案和sql小提琴 – amaster