一个未规范化的数据库有一个名为 batches 的表
表批次具有字段 student_ids ,其中包含多个 id。例如1311, 1319, 1400
来自:从批次中选择 student_ids WHERE 1311 IN(student_ids)
我们得到 student_ids:1311, 1319, 1400
并且:从批次中选择 student_ids WHERE 1319 IN(1311, 1319, 1400)
工作正常:1311, 1319, 1400
但
从批次中选择 student_ids WHERE 1319 IN(student_ids)
或者
从批次 b 中选择 @student_ids := student_ids;从批次中选择 student_ids WHERE FIND_IN_SET(1319, @student_ids)
返回Null
我错过了什么?我想我必须将第一个结果转换为数组 - 但是如何?
我已经尝试过 Dash 的建议(非常感谢 Dash),但我仍然遇到问题
我也试过 SELECT id FROM batches WHERE INSTR(','+1319+',', ','+CAST(student_ids AS CHAR) + ',')
正如 Matt Ellen 在另一篇文章中所建议的那样 - 仅在第一项匹配时才有效