gpt4 book ai didi

mysql - 扩展结果集,添加从另一个表的不同行中获取的列

转载 作者:行者123 更新时间:2023-11-30 22:54:07 24 4
gpt4 key购买 nike

美好的一天!

假设我有两个定义如下的表:

TABLE USER(id, name, ...其他不重要的字段)

| id | name |
-------------
| 1 | John |
| 2 | Mary |
| 3 | Luke |
| 4 | Lisa |

TABLE CHOICE(id, uid, kname) 其中 uid 是表 USER 的外键。

请注意:我不知道表 CHOICE 有多少个不同的 kname 条目。我唯一知道的是它们会受到限制(比如 0 到 10 之间)。

| id | uid |  kname |
---------------------
| 1 | 1 | city1 |
| 2 | 1 | city2 |
| 4 | 2 | city2 |
| 5 | 2 | city3 |
| 6 | 4 | city4 |

是否可以编写返回此表的查询:

| id | name | city1 | city2 | city3 | city4 |
---------------------------------------------
| 1 | John | 1 | 1 | 0 | 0 |
| 2 | Mary | 0 | 1 | 1 | 0 |
| 3 | Luke | 0 | 0 | 0 | 0 |
| 4 | Lisa | 0 | 0 | 0 | 1 |

我。 e.表 USER 扩展了与表 CHOICE 中不同的 kname 一样多的附加列,如果 CHOICE 中存在 uid 等于用户 id 的行,则用 kname 标记并包含 1,否则为零。

最佳答案

有点像

SELECT u.id, u.name, (SELECT COUNT(c.uid) FROM CHOICE WHERE c.kname = 'city1') AS city1, (SELECT COUNT(c.uid) FROM CHOICE WHERE c.kname = 'city2') AS city2, (SELECT COUNT(c.uid) FROM CHOICE WHERE c.kname = 'city3') AS city4, (SELECT COUNT(c.uid) FROM CHOICE WHERE c.kname = 'city4') AS city4
FROM USER u
INNER JOIN CHOICE c ON u.id = c.uid
GROUP BY u.id, u.name

关于mysql - 扩展结果集,添加从另一个表的不同行中获取的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27129259/

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