gpt4 book ai didi

mysql - 使用 MYSQL 中另一个现有表的值定义表模式的 SQL 脚本

转载 作者:行者123 更新时间:2023-11-29 12:34:13 24 4
gpt4 key购买 nike

我在 MySQL 中有一个表,其形式如下

ID   Team   Task
-----------------
1 Team01 Task_01
2 Team02 Task_02
3 Team02 Task_01

“团队”和“任务”列中的值重复。

我需要从表中收集不同的任务,并使用它来创建一个新表,其架构的形式为 Table (Task_01 varchar(20),Task_02 varchar(20));
表(团队 varchar(15) PRIMARY KEY、Task_01 int、Task_02 int)

创建后,我需要用各个团队执行任务的频率填充这个新表。

需要一些指示才能继续前进。谢谢。

[编辑]

预期输出是另一个表格,如下所示

Team   | Task_01 | Task_02

Team01 | 1 | 0
Team02 | 1 | 1

从给定表中获取所有不同的任务后,只需要有关如何创建架构的帮助/想法(仅通过 SQL 脚本)。

最佳答案

鉴于此示例数据:

CREATE TABLE Table1
(`ID` int, `Team` varchar(6), `Task` varchar(7))
;

INSERT INTO Table1
(`ID`, `Team`, `Task`)
VALUES
(1, 'Team01', 'Task_01'),
(2, 'Team02', 'Task_02'),
(3, 'Team02', 'Task_01')
;

你通常会这样做

SELECT
Team, Task, COUNT(*)
FROM Table1
GROUP BY Team, Task;

得到这个结果

|   TEAM |    TASK | COUNT(*) |
|--------|---------|----------|
| Team01 | Task_01 | 1 |
| Team02 | Task_01 | 1 |
| Team02 | Task_02 | 1 |

这不是所需的格式,但通常格式化是在应用程序层完成的。这就是我的推荐。它简单且高效,并且没有任何缺点,例如当您想要添加另一个任务时该怎么办?您将添加另一列。当团队与此任务无关时,该列中具有 NULL 值。这不好。无论如何...如果您绝对希望得到像问题中那样的输出而不是在应用程序级别上执行,您可以这样做:

SELECT
Team,
COUNT(IF(Task = 'Task_01', 1, NULL)) AS Task_01,
COUNT(IF(Task = 'Task_02', 1, NULL)) AS Task_02
FROM Table1 t
GROUP BY Team

结果:

|   TEAM | TASK_01 | TASK_02 |
|--------|---------|---------|
| Team01 | 1 | 0 |
| Team02 | 1 | 1 |

关于mysql - 使用 MYSQL 中另一个现有表的值定义表模式的 SQL 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27037118/

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