我的表中有一列称为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的另一个要求。