表名:学生:
id name topics
--- ---- --------
1 Test1 1,2,10,15,25
2 Test2 5,21,11,18,13
3 Test3 2,1,16,25,10
4 Test4 2
我的查询:
select * from student where topics like '%2%'
输出:全部4条记录。 预期:但我需要获得3条记录,因为id 1,3,4主题栏包含2.第2条记录不包含2条。
答案 0 :(得分:1)
您可以使用FIND_IN_SET函数:
select * from student where FIND_IN_SET ('2', topics)
答案 1 :(得分:0)
第二条记录包含2条。 你需要使用这样的东西。
WHere topics=2 or topics like '2,%'or topics like '%,2' or topics like '%,2,%'
首先检查主题是否为2.如果2是第一个,则第二个,但还有其他。第三个检查2是否是最后一个,但之前有一些数字,并且第四个检查2是否介于两者之间
答案 2 :(得分:0)
这样的事可能会有所帮助吗?
SELECT * FROM student WHERE topics LIKE '2,%' OR topics LIKE '%,2,%' OR topics LIKE '%,2' OR topics= '2';
很遗憾你不能和LI一起使用IN。