如何通过查询向mysql中的表添加新列

问题描述 投票:0回答:2

我在Mysql中有一个这样的表:

学生姓名 课程
乔恩 C1
大卫 C2
韦恩 C3
乔恩 C3

我需要将结果写在这样的表格中:

学生姓名 课程1 课程2
乔恩 C1 C3
大卫 C2
韦恩 C3

如果有帮助我,我将不胜感激。 谢谢

python mysql sql select duplicates
2个回答
2
投票

如果您只需要一行中每个学生的所有结果,您可以使用 group_concat 例如:

SELECT studentname, group_concat(course) AS Courses
FROM my_table
GROUP BY studentname

0
投票

您可以使用以下语句添加列:

ALTER TABLE my_table ADD COLUMN Course2 CHAR(2)

其中

my_table
是表的名称,
CHAR(2)
是列的类型(您可能需要与
Course1
相同)

查看文档

但是这样做是完全错误的!

您在表格中混合了概念,当学生注册第三门课程时会发生什么?还是第四个?

如果您的表是联结表,请参阅@scaisEdge 发布的答案。

否则,如果您尝试将所有学生信息存储在一张表中,则应更改数据库结构以具有:

一个

student
表,存储学生信息,例如:

table student
  id  |    name    |      email       
  1   |  aragorn   |   [email protected]
  2   |  gandalf   |   [email protected]
...

另一个存储课程信息的表:

table course
  id  |      name    |    ....
  1   |     magic1   |    ....
  2   | swordmanship |    ....

还有一个连接表来存储哪些学生注册了哪些课程:

table student_course
student_id    |    course_id
    1         |        1       // Gandalf is taking magic1
    2         |        2       // Aragorn is taking swordmanship
    1         |        2       // But Gandalf also is taking swordmanship

在此联结表中

student_id
将是
student.id
的外键,而
course_id
course.id
的外键。

wikipedia中有一些关于关系模型的很好的介绍性信息。

© www.soinside.com 2019 - 2024. All rights reserved.