gpt4 book ai didi

mysql - 如果条目不存在,则选择默认值

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

我有三个表...users、user_info 和quota_levels。它们看起来像这样:

CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(31) NOT NULL,
password VARCHAR(33) NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE user_info (
userID INT UNSIGNED NOT NULL,
firstName VARCHAR(32),
lastName VARCHAR(32),
phone CHAR(14),
address VARCHAR(128),
birthdate DATE,
misc TEXT,
quotaLevel VARCHAR(32),
PRIMARY KEY (userID)
);

CREATE TABLE quota_levels (
quotaLevel VARCHAR(32) NOT NULL,
quota1 INT NOT NULL,
quota2 INT NOT NULL,
PRIMARY KEY (level)
);

每个用户都会在 users 表中拥有一个条目,但不一定在 user_info 表中。 user_info 表中的每个用户都有一个 quotaLevel,与 quota_levels 表中的 quotaLevel 列相对应。 quotaLevel 的可能值为 BRONZE、SILVER、GOLD 和 PLATINUM。

我可以详细解释为什么要这样设置,但直接说这个结构无法更改会更快。

如果用户存在,我想获取其 quotaLevelquota1 值。如果用户不存在,则应返回 BRONZE 的 quota1 值。

我想通过一个查询来完成此操作。可以做到吗?如何做到?

最佳答案

SELECT u.Name, 
COALESCE(ql.quota1, (SELECT quota1 FROM quota_level WHERE quotaLevel = 'BRONZE'))
FROM users u
LEFT JOIN user_info ui
INNER JOIN quota_level ql
ON ui.quotaLevel = ql.quotaLevel
ON u.id = ui.userID

关于mysql - 如果条目不存在,则选择默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8810779/

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