我正在为系统制作首选项模块,以便用户可以为某些部分(例如布局,颜色方案,主屏幕等)定义他们自己的首选项。表中的每个首选项都有一个默认值(如果用户尚未定义),并且一旦用户更改了其首选项,系统应该使用该用户定义的值。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