gpt4 book ai didi

SQL 选择 : two-dimensional select with variable column count

转载 作者:行者123 更新时间:2023-12-04 21:23:48 24 4
gpt4 key购买 nike

CREATE TABLE activities(activityid, name);
CREATE TABLE activity_scores(activityid, studentid, score);
CREATE TABLE students (id, name);

有没有什么方法可以编写单个 SELECT 查询,以这种格式为每个学生生成一个结果?

studentid | studentname | activity1_score | activity2_score | activity3_score [...]

用多个查询来做是微不足道的:

for each studentid in "select id from students":
print studentid
for each activity in "select activityid from activities":
select score from activity_scores where studentid = studentid
print score

(伪代码,我知道它不准确)

肯定有一种方法可以使用单个 SELECT 查询创建此结果,对吗?

最佳答案

MySQL、SQLite 和其他 RDBMS 都有一个叫做 GROUP_CONCAT 的东西,
它应该做你想做的事情(未经测试——不知道你在 activity_scores 表上的加入条件):

SELECT   students.studentid
, students.studentname
, GROUP_CONCAT(activity_scores.score)

FROM activity_scores
INNER JOIN activities
ON activities.activityid = activity_scores.activityid
INNER JOIN students
ON students.studentid = activities.studentid

GROUP BY students.studentid
, students.studentname

但是smarter folks than me可能会说做这样的事情会混淆两个不同的步骤,这两个步骤分开时最容易处理:

  • 数据访问/收集
  • 数据展示

关于SQL 选择 : two-dimensional select with variable column count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/991951/

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