gpt4 book ai didi

php - mysql如果行不存在,获取默认值

转载 作者:行者123 更新时间:2023-11-29 00:58:15 25 4
gpt4 key购买 nike

我正在为一个系统制作一个首选项模块,这样用户就可以为某些部分定义他们自己的首选项(比如布局、配色方案、主屏幕等)。表中的每个首选项都有一个默认值(以防用户尚未定义),一旦用户更改了他们的首选项,系统将使用该用户定义的值。

我在选择所需值时遇到问题,我的查询使用用户定义的值,但遗憾的是,当用户尚未定义首选项时它返回 null

我有两张 table

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_idname 的首选项),如果不存在,则必须返回默认值。

最佳答案

WHERE (user_id = 17 OR user_id IS NULL) AND name = "menu_items"

只是为了清理查询的其余部分:

preferences defined 中的 id 不需要存在,而是使用 preference_iduser_id 的组合键。

如果 preferencesid 被命名为 preference_id,那么长的 ON 语句可以替换为 USING(preference_id)

IF 函数可以替换为 COALESCE(defined_value, default_value)

关于php - mysql如果行不存在,获取默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4977951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com