mysql - Sql 一列中有多个 id

标签 mysql

我有一张这样的 table

学生

ID | Name | Subject |
1  | foo  | 1,2,3   |

主题

ID | Subject_name |
1  | Math         |
2  | Science      |
3  | History      |

我试过这个

"SELECT * FROM student LEFT JOIN subject ON student.id = subject.id"

但是他们是一个错误

我期望的是获取学生表中的所有 subject_name

最佳答案

您需要使用FIND_IN_SET查找 GROUP_CONCAT 范围内的值返回以逗号分隔值的行。

SELECT  s.id, s.Name, GROUP_CONCAT(t.Subject_name)
FROM    student s
        INNER JOIN subject t
            ON FIND_IN_SET(t.ID, s.subject)
GROUP BY s.id, s.Name

这是一个Demo .

但是,还请考虑更改表的架构,因为目前这不是理想的设计。

关于mysql - Sql 一列中有多个 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48616069/

相关文章:

mysql - 选择查询并过滤至少一个匹配项

mysql - SAS XML 映射 - 具有多个 XML 文件

php - Mysql,网站 'unable to select database'

sql - MySQL 到 SQL Server : is there something similar to query cache?

PHP sql 查询 WHERE 值 = 0

python - Django:将结果从两个 mysql 表返回到 JSON

PHP 未将数据插入 MySQL

php - 从查询中获取 PDO 的列名称

php - 什么更好?具有相同实体的多个表与具有更多记录的少数关系表

mysql - 比较两个表并删除与两列比较的公共(public)行