我有一个问题,在运行查询时,IN键返回空。这是我的疑问:
SELECT * FROM `sc_miscellaneous` where discount_for=4 AND stud_id IN (1,2) AND status=1
此查询返回正确的结果。但如果我使用IN (2,3)
或IN (2)
则意味着零结果。例如。
SELECT * FROM `sc_miscellaneous` where discount_for=4 AND stud_id IN (2,3) AND status=1
表 sc_iscellaneous :
ID Miscellaneous misc_amount discount discount_for class stud_id status
1 5 200 2 4 1 1,2,3,4,5,6, 1
7,8,9,10,11,
12,13,14,15,16,
17,18,19
2 6 500 2 4 1 1,2,3,4,5,6,7 1
提前谢谢。
答案 0 :(得分:1)
<强>更新强>
使用以下查询
SELECT * FROM `sc_miscellaneous`
WHERE stud_id LIKE '%,2,%' OR stud_id LIKE '%,3,%'
OR stud_id LIKE '2,%,' OR stud_id LIKE '3,%'
OR stud_id LIKE '%,2' OR stud_id LIKE '%,3'
因为你有varchar逗号分隔列表。
检查
1)如果该UNIQUE编号位于逗号分隔列表之间,
2)或者如果是在开始
3)或者如果它在最后。
答案 1 :(得分:0)
我认为你的stud_id类型是int使它成为varchar并运行代码
stud_id(int)---->change to varchar
你必须使用
in_array()
答案 2 :(得分:0)
我不认为使用IN
子句编写查询的方式是正确的方法。
请按照link
进行操作根据文档,如果stud_id
是一个整数,那么您可以使用IN Clause
使用多个整数进行检查。就像stud_id = 1一样,那么你可以写stud_id
IN(1,2,3)。
根据您的要求,您可能需要编写多个查询来提取数据并进行比较。