从地图列表中的mysql检索数据的查询
我正在尝试用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
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;
这对我有用。非常感谢你的快速回复,这对我很有效。非常感谢您的快速回复。