带有IN的MySQL查询返回空

时间:2014-12-26 06:41:59

标签: php mysql

我有一个问题,在运行查询时,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

提前谢谢。

3 个答案:

答案 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)。

根据您的要求,您可能需要编写多个查询来提取数据并进行比较。