我正在爲系統製作首選項模塊,以便用戶可以爲某些部分(例如佈局,顏色方案,主屏幕等)定義他們自己的首選項。表中的每個首選項都有一個默認值(如果用戶尚未定義),並且一旦用戶更改了其首選項,系統應該使用該用戶定義的值。mysql如果行不存在,則獲取默認值
我在選擇所需的值時遇到了問題,我的查詢與用戶定義的值一起工作,但遺憾的是,當用戶還沒有定義偏好時,它會返回null
。
我有2個表
table **preferences**:
id
name
default_value
table **preferences_defined**:
id
preference_id
user_id
defined_value
我想創建一個功能可輕鬆通過給予人的USER_ID選擇所需的值給誰優先適用和首選項的名稱。此刻我的查詢看起來是這樣的:
SELECT IF(ISNULL(defined_value),default_value,defined_value) AS result
FROM preferences
LEFT JOIN preferences_defined ON preferences_defined.id = preferences.id
WHERE user_id = 17
AND name = "menu_items"
我猜WHERE user_id = 17
部分是哪裏出了問題,因爲當沒有可用的定義值,這意味着目前也沒有一個叫user_id列。 我需要找到一種方法來完成這項工作。 所以,我需要選擇定義的值(如果存在的話)(如果不存在,給定user_id
和name
),否則它將不得不返回默認值。
謝謝你,那真是我尋找的東西! – Pieter888 2011-02-12 13:51:01