mysql - 查询以从 map 列表中的 mysql 检索数据

标签 mysql

我正在尝试在 MYSQL 中编写查询。我有一个名为 student_data 的表。它有 4 列。

student_data_id
student_id
course_name
registerd_time

我正在尝试检索为每个学生注册的类(class)。我使用了以下查询。

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模板来获取上述格式?

最佳答案

GROUP_CONCAT 函数使用默认分隔符连接一个 GROUP(在本例中为 student_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;

关于mysql - 查询以从 map 列表中的 mysql 检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46791962/

相关文章:

php - Amazon RDS 中的 lower_case_table_names 设置

MySQL如何在使用3个表时求和

php - MAMP:未定义的方法 mysqli_stmt::get_result()

php - 尝试通过 Laravel 中的相关表获取数据

MySQL更改 key 长度

mysql - 创建表时转换日期和/或时间时转换失败

mysql - 行编号为 p :dataTable

mysql - 如何在没有值的字段上使用 MYSQL WHERE

mysql - 插入多行时出现 NonUniqueObjectException 错误,LAST_INSERT_ID() 返回 0

mysql - 具有最大日期的 IN 子句的 LINQ 表达式