从地图列表中的mysql检索数据的查询

从地图列表中的mysql检索数据的查询,mysql,Mysql,我正在尝试用MYSQL编写一个查询。我有一个名为student\u 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('Ja

我正在尝试用MYSQL编写一个查询。我有一个名为
student\u 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模板以获得上述格式?

试试这个-

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;
试试这个-

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;

您可以使用以下方法完成此操作:


您可以使用以下方法完成此操作:


函数组用默认分隔符表示组(在本例中为学生id)

SET SESSION group_concat_max_len = @@max_allowed_packet

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;

函数组用默认分隔符表示组(在本例中为学生id)

SET SESSION group_concat_max_len = @@max_allowed_packet

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;

这对我有用。非常感谢你的快速回复,这对我很有效。非常感谢您的快速回复。