我的表中有一个名为 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/