如何编写 MySql select 语句以获取一条语句中某个 id 的所有定义设置或未覆盖的默认设置

2024-03-14

在一个表中myTable定义为:

+----+---------+-----------+
| id |  name   |   value   |
|----+---------+-----------+
| 7  | hand    |  right    |
| 5  | hand    |  left     |
| 0  | hand    |  both     |
| 0  | feet    |  both     |
| 0  | eyes    |  green    |
| 9  | eyes    |  blue     |
| 2  | eyes    |  white    |
| 2  | hand    |  raised   |
+----+---------+-----------+

默认设置由 id = 0 控制。

我的问题是如何编写一条 select 语句来在一个查询中获取 id = 5 的名称、值,该查询将包括 id = 5 的设置以及任何未覆盖的默认值。

结果应该是:

+---------+-----------+
|  name   |   value   |
+---------+-----------+
| hand    |  left     |
| feet    |  both     |
| eyes    |  green    |
+---------+-----------+  

目前尚不清楚结果集的顺序是否重要,因此不妨尝试:

SELECT name,
    value
FROM MyTable
WHERE id = 5
    AND id NOT IN
    (
        SELECT id
        FROM MyTable
        WHERE id = 0
        GROUP BY MyTable.id
    )
UNION
SELECT name,
    value
FROM MyTable
WHERE id = 0
    AND name NOT IN
    (
        SELECT name
        FROM MyTable
        WHERE id = 5
        GROUP BY MyTable.name
    )

免责声明:在 SQL Server 中进行测试,但未使用特定于该版本 SQL 的任何内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何编写 MySql select 语句以获取一条语句中某个 id 的所有定义设置或未覆盖的默认设置 的相关文章

随机推荐