我正在尝试在MYSQL中编写查询。我有一个名为student_data
的表。它有4列。
student_data_id
student_id
course_name
registerd_time
我正在尝试检索为每个学生注册的课程。我使用了以下查询。
select
student_id,course_name from student_data
where
student_id IN(2224508,22260211) and
course_name IN('Java','Salesforce','Unix','VBScript') and
registered_time > NOW() - INTERVAL 1 DAY
group by student_id,course_name;
我得到以下输出:
2224508 Java
2224508 Salesforce
2224508 Unix
22260211 Java
22260211 Salesforce
22260211 VBScript
我试图以这种格式获得输出:
2224508 Java,Salesforce,Unix
22260211 Java,Salesforce,VBScript
如何编写查询或JDBC模板以获得上述格式?
答案 0 :(得分:2)
函数GROUP_CONCAT将GROUP(在本例中为student_id)与一个默认分隔符进行连接,
select
student_id
, GROUP_CONCAT(course_name)
from student_data
where
student_id IN(2224508,22260211) and
course_name IN('Java','Salesforce','Unix','VBScript') and
registered_time > NOW() - INTERVAL 1 DAY
group by student_id;
答案 1 :(得分:1)
试试这个 -
select student_id
,GROUP_CONCAT(course_name)
from student_data
where student_id IN(2224508, 22260211)
and course_name IN('Java','Salesforce','Unix','VBScript')
and registered_time > NOW() - INTERVAL 1 DAY
group by student_id;
答案 2 :(得分:1)
您可以使用GROUP_CONCAT()
完成此操作:
select
student_id,group_concat(course_name)
from student_data
where
student_id IN(2224508,22260211) and
course_name IN('Java','Salesforce','Unix','VBScript') and
registered_time > NOW() - INTERVAL 1 DAY
group by student_id;