首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WHERE-IN或FIND_IN_SET

WHERE-IN或FIND_IN_SET
EN

Stack Overflow用户
提问于 2012-08-08 18:16:56
回答 1查看 2.7K关注 0票数 0

未规范化的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在另一篇文章中所建议的那样-只有在第一项匹配的情况下才有效

EN

回答 1

Stack Overflow用户

发布于 2012-08-08 18:20:05

试试这个:

代码语言:javascript
复制
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) ;

代码语言:javascript
复制
SELECT student_ids FROM batches WHERE CAST(student_ids AS UNSIGNED INTEGER) IN (1319);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11862385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档