gpt4 book ai didi

mysql - 从数据库获取应用程序级别和全局级别设置

转载 作者:行者123 更新时间:2023-11-29 17:56:08 24 4
gpt4 key购买 nike

我正在构建一个动态应用程序,它将根据设置进行操作。

设置存储在 MySQL 表中,该表包含应用级数据和全局级数据(app_id = 0)

我的用例是,我想选择应用程序的设置。如果不存在,则从全局级别获取相应的设置。

我使用子查询和COALESCE函数实现了这一点。

问题:可以在单个查询中获取数据吗?如果没有,是否可以修改架构以以更简单的方式处理此应用程序级别和全局级别?

架构

CREATE TABLE `settings` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`partner_id` int(11) NOT NULL,
`app_id` int(11) DEFAULT NULL,
`type` varchar(64) DEFAULT NULL,
`name` varchar(64) DEFAULT NULL,
`value` varchar(300) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `key_partner_id` (`partner_id`),
KEY `key_app_id` (`app_id`),
KEY `key_type` (`type`),
KEY `key_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据

| id | partner_id | app_id |  type |    name |  value |
|----|------------|--------|-------|---------|--------|
| 1 | 500 | 0 | color | primary | blue |
| 2 | 500 | 100 | color | primary | green |
| 3 | 500 | 101 | color | primary | red |

查询

SELECT * FROM settings WHERE app_id in (
COALESCE ((SELECT app_id FROM settings WHERE app_id = 100), 0)
);

| id | partner_id | app_id | type | name | value |
|----|------------|--------|-------|---------|-------|
| 2 | 500 | 100 | color | primary | green |


SELECT * FROM settings WHERE app_id in (
COALESCE ((SELECT app_id FROM settings WHERE app_id = 102), 0)
);

| id | partner_id | app_id | type | name | value |
|----|------------|--------|-------|---------|-------|
| 1 | 500 | 0 | color | primary | blue |

最佳答案

单个查询即可获取应用的设置或依靠全局设置

SELECT * FROM settings 
WHERE app_id IN(0,102)
ORDER BY app_id DESC
LIMIT 1;

显然,这假设应用程序设置为单行。

关于mysql - 从数据库获取应用程序级别和全局级别设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48810337/

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