【问题标题】:Mysql where clause (search where table column match) [duplicate]Mysql where子句(搜索表列匹配的位置)[重复]
【发布时间】:2017-05-10 16:22:07
【问题描述】:

我有 1 个表,t1,大约 500+ 行数据,我只是显示一个示例数据。

数据如下:

+--------+----------+-------------------+
| id     | Name     | category          |
+--------+----------+-------------------+
| 1      | ABC      | 6,9,25,27         |
+---------------------------------------+

我的mysql查询如下:

$gcategory = intval($_GET['cat']);
$test = DB::fetch_all("SELECT * FROM t1 WHERE category like '%$gcategory%' ORDER BY id DESC");
foreach($test as $te){
    $list[] = $te;
}

但是如果$gcategory = '7'; ABC 也会出现在我的$list[] 中,但我只想当$gcategory = '6' || $gcategory = '9' || $gcategory = '25' || $gcategory = '27' 那么ABC 只会出现在我的$list[] 中?如何解决这个问题?

谢谢。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    请尝试以下方式,当您从 , 分隔值列表中查找时,您应该使用 find_in_set php函数:

    $gcategory = intval($_GET['cat']);
    $test = DB::fetch_all("SELECT * FROM t1 WHERE FIND_IN_SET("'.$gcategory.'", category) ORDER BY id DESC");
    foreach($test as $te){
        $list[] = $te;
    }
    

    【讨论】:

      【解决方案2】:

      尝试使用MySQL FIND_IN_SET()函数

      你的查询会是这样的

      "SELECT * FROM t1 WHERE FIND_IN_SET($gcategory,category) ORDER BY id DESC"
      

      【讨论】:

        猜你喜欢
        • 2014-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-31
        相关资源
        最近更新 更多