我的表学生包含如下所示的数据:
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的行。
有人可以为此提出解决方案吗?
答案 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);