如何从sql中用逗号分隔的表中检索数据?

时间:2018-03-02 09:50:35

标签: php mysql sql database-design

我的表学生包含如下所示的数据:

id       name       activity
1        susan      1,2
2        denny      1,2,3
3        ken        3

我想从这个表中选择活动等于2的所有数据,如name和id。我已经使用了类似的SQL查询,但它不起作用。

$sqll = mysqli_query($con,"SELECT id,studentname FROM students WHERE activity LIKE '%$activity'");

如果另一行包含id : 4 name:ben activity : 22等数据,它也会显示此行。我只想要包含活动2的行。

有人可以为此提出解决方案吗?

2 个答案:

答案 0 :(得分:0)

我同意迄今为止关于规范化数据的评论,但是要回答表格结构中的问题,因为您可以这样做:

$sqll = mysqli_query($con,"SELECT id,studentname FROM students WHERE CONCAT(',',activity,',') LIKE '%,$activity,%'");

请注意,您将字段数据的任一侧与您要查找的特定活动连接起来。另外请注意,我在右侧添加了一个%,以便" denny"将被抓住

答案 1 :(得分:0)

SELECT  id, studentname
    FROM  students
    WHERE  FIND_IN_SET("$activity", activity);