【问题标题】:Mysql WHERE IN not working when i put swap the comma seperated value当我交换逗号分隔值时,Mysql WHERE IN 不工作
【发布时间】:2014-10-18 07:01:32
【问题描述】:

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

下面的查询(我从 Codeigniter 打印出来的)给了我subject = 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'));

【问题讨论】:

    标签: mysql codeigniter where-in


    【解决方案1】:

    in 应该有像

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

    【讨论】:

      【解决方案2】:

      问题就在这里

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

      输入变量subject是一个字符串,例如'2,4'

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

      这会将一个数组传递给where_in

      根据User guide

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

      【讨论】:

      • 谢谢伙计。我完全错过了。你真是个专业人士。
      • @jack 很高兴为您提供帮助 ;)
      【解决方案3】:

      试试这样:

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

      对于整数

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

      【讨论】:

      • 谢谢伙计。感谢这个很棒的提示
      猜你喜欢
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多