当我把掉逗号分隔值时,Mysql WHERE IN无法正常工作

时间:2014-08-25 07:08:28

标签: mysql codeigniter where-in

我的mysql查询下面有这个奇怪的问题。如果我错了,请纠正我。

以下查询(我从Codeigniter打印)给出了主题= 4的结果。

WHERE `notes`.`subject` IN ('4,2')  GROUP BY `notes`.`id` ORDER BY `created_date` DESC

但是当我改变了这个

WHERE `notes`.`subject` IN ('2,4')  GROUP BY `notes`.`id` ORDER BY `created_date` DESC

没有返回任何结果。这是为什么? 假设我在表中只有一个结果,我正在使用codeigniter。

$this->db->where_in('notes.subject',$this->input->get('subject'));

3 个答案:

答案 0 :(得分:2)

in应该有像

这样的参数字符串
 IN ('2','4'); // for varchar
 IN (2,4) // for Integer values

答案 1 :(得分:1)

试试这样:

WHERE `notes`.`subject` IN ('4','2') ....

for Integers

WHERE `notes`.`subject` IN (4,2) ....

答案 2 :(得分:1)

问题在这里

$this->db->where_in('notes.subject',$this->input->get('subject'));

输入变量主题是例如'2,4'

的字符串

您可以使用$this->db->where_in('notes.subject',explode(",",$this->input->get('subject')));

将数组传递给where_in

并根据User guide

where_in()的第二个参数是数组