未规范化的db有一个名为batches的表。
表batches具有字段student_ids,其中包含多个it。例如1311, 1319, 1400
自:从批中选择student_ids,其中1311 IN(student_ids)
我们得到student_ids:1311, 1319, 1400
And: SELECT student_ids FROM batches WHERE 1319 IN(1311,1319,1400)
工作正常:1311, 1319, 1400
但
从1319 IN( student_ids )的批次中选择student_ids
或
从batches b中选择@student_ids := student_ids;从batches WHERE FIND_IN_SET中选择student_ids (1319,@student_ids)
返回Null
我遗漏了什么?我想我必须把第一个结果转换成一个数组--但是怎么做呢?
我试过Dash的建议(非常感谢Dash),但我还是遇到了麻烦
我也尝试过SELECT id FROM批处理WHERE INSTR(','+1319+','+CAST(student_ids AS CHAR) + ',')
正如Matt Ellen在另一篇文章中所建议的那样-只有在第一项匹配的情况下才有效
发布于 2012-08-08 18:20:05
试试这个:
SELECT @student_ids := GROUP_CONCAT(CAST(TRIM(student_ids) AS UNSIGNED INTEGER))
FROM batches b;
SELECT student_ids
FROM batches
WHERE FIND_IN_SET(1311, @student_ids) ;或
SELECT student_ids FROM batches WHERE CAST(student_ids AS UNSIGNED INTEGER) IN (1319);https://stackoverflow.com/questions/11862385
复制相似问题