MySQL:LIKE 查询帮助?

标签 mysql

我的表中有一个名为 student_id 的列,我将与该列中特定记录关联的学生 ID 存储在该列中,用 | 字符分隔。以下是该列中数据的几个示例条目:

 243|244|245 
 245|1013|289|1012
 549|1097|1098|245|1099

我需要编写一个 SQL 查询来返回 student_id 为 `245 的记录。任何帮助将不胜感激。

最佳答案

不要在 student_id 字段中存储多个值,因为 First Normal Form 要求每个行和列的交叉点只有一个值.出于多种原因,这是一件好事,但显而易见的是,它解决了必须处理诸如 student_id 为“1245”的情况。

相反,最好有一个单独的表来存储与该表中的记录关联的学生 ID。例如(您也想为此表定义添加适当的约束),

CREATE TABLE mytable_student_id (
   mytable_id INTEGER,
   student_id INTEGER
);

然后您可以使用连接进行查询:

SELECT * FROM mytable JOIN mytable_student_id 
   ON (mytable.id=mytable_student_id.mytable_id) WHERE mytable_student_id.student_id = 245

请注意,由于除了包含 student_id 字段外,您没有发布有关原始表的任何架构详细信息,因此我将其称为 mytable这个例子的(并假设它有一个名为 id 的主键字段——拥有一个主键是 1NF 的另一个要求)。

关于MySQL:LIKE 查询帮助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4452893/

相关文章:

java - 在 WSO2 中发布或保存 API 时出错

php - 拉拉维尔 5.3 : Undefined property: Illuminate\Database\Eloquent\Collection Error

MySQL select where in but not in with join

php - 当网页上下载 pdf 链接时增加 SQL 数据库中的值

MySQL - 将更改从一个表插入到另一个表

php - 我如何订购这个 MySQL 日期?

java - 当 JTable 上有复选框列时如何检索数据?

MYSQL 查询 : get the latest date with grouped by data

mysql - 从表中获取所有内容,但如果network_id为9,则只取其中2个

php - 如何使用带有连接表的 mysqli 删除查询