【发布时间】:2018-08-10 12:30:00
【问题描述】:
我有包含如下数据的学生表:
id name activity
1 susan 1,2
2 denny 1,2,3
3 ken 3
我想从这个表中选择所有数据,比如 name 和 id,activity 等于 2。我已经使用 like 完成了一个 sql 查询,但它不起作用。
$sqll = mysqli_query($con,"SELECT id,studentname FROM students WHERE activity LIKE '%$activity'");
如果另一行包含像id : 4 name:ben activity : 22 这样的数据,它也会显示这一行。我只想要包含活动 2 的行。
谁能为此提出解决方案?
【问题讨论】:
-
$sqll = mysqli_query($con,"SELECT id,studentname FROM students WHERE activity LIKE '%$activity'");
-
有没有其他不用LIKE的方法
-
这个数据是非规范化的,这就是你苦苦挣扎的原因。如果您对数据进行了适当的规范化,其中活动列表位于子表中,并且外键返回到学生表,这甚至都不是问题。在单个字段中存储多个值是一种反模式。了解实体关系设计和数据库规范化,以了解如何正确构建数据。那么您的查询也会简单得多。这是一个典型的 X-Y 问题 - 您试图解决症状而不是解决真正的原因。
-
不要以这种方式存储数据 (why?)。
-
以这种形式存储数据的人对您造成了伤害。从长远来看,正如其他人所建议的那样,将数据重组为两个表会做得更好。我知道这是一个真正的痛苦。这就是为什么我们一直敦促人们在为其他人构建数据库之前学习数据库设计。
标签: php mysql sql database-design