gpt4 book ai didi

mysql - 通过外键将值列表放入一列

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

我有两个表“sample”和“processes”,我想在一个列中获取给定样本的所有过程。

表“示例”示例:

----------------------------------------
| Sample Table |
| |
|id | timestamp | other columns... |
--------------------------------------
|1 | 24/04/1994 | ... |
|2 | 25/04/1994 | ... |
|... |... | .... |
----------------------------------------

表“进程”示例:

----------------------------------------
| Processes Table |
| |
|id | sample_id | process_name |
--------------------------------------
|1 | 1 | facebook |
|2 | 1 | tinder |
|3 | 1 | clash royale |
|4 | 2 | uno |
|5 | 2 | whatsapp |
|... |... | .... |
----------------------------------------

结果:

------------------------------------------------------------
| Result Table |
| |
|sample_id | timestamp | processes |
-----------------------------------------------------------
|1 | 24/04/1994 | [facebook, tinder, clash royale] |
|2 | 25/04/1994 | [uno, whatsapp] |
------------------------------------------------------------

是否可以通过 SQL 查询来实现?怎么做?

P.S:我知道我可以通过以下方式获得给定样本的所有过程:

SELECT sample_id, timestamp, process_name
FROM sample, processes
WHERE sample.id = processes.sample_id

但这给了我太多不必要的行

最佳答案

您可以尝试将 GROUP_CONCATCONCAT 函数一起使用。

模式(MySQL v5.7)

CREATE TABLE sample(
id INT,
timestamp DATE

);




INSERT INTO sample VALUES (1,'1994/04/24');
INSERT INTO sample VALUES (2,'1994/04/25');

CREATE TABLE processes(
id INT,
sample_id INT,
process_name VARCHAR(50)

);


INSERT INTO processes VALUES (1 ,1,'facebook');
INSERT INTO processes VALUES (2 ,1,'tinder');
INSERT INTO processes VALUES (3 ,1,'clash');
INSERT INTO processes VALUES (4 ,2,'uno');
INSERT INTO processes VALUES (5 ,2,'whatsapp');

查询#1

SELECT sample_id, timestamp, CONCAT('[',GROUP_CONCAT(process_name),']') processes
FROM sample JOIN processes ON sample.id = processes.sample_id
GROUP BY sample_id, timestamp;

| sample_id | timestamp | processes |
| --------- | ---------- | ----------------------- |
| 1 | 1994-04-24 | [tinder,clash,facebook] |
| 2 | 1994-04-25 | [uno,whatsapp] |

View on DB Fiddle

注意

我会使用 JOIN 而不是使用 , 因为 JOIN 强调连接两个表的关系。

关于mysql - 通过外键将值列表放入一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53843893/

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