如何使用id from字段和yii中的id列表从数据库表中获取所有行?

nmpmafwu  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(421)

我正在使用php,yii1.1和mysql做一个项目。
我有一张table products 带字段 product_id , product_category_id , product_name , product_image , product_description 等等。。。
这个 product_id 是主键 product_category_id 包含产品所属类别的ID(可以将“1、3、4”等多个ID作为字符串)。
我怎样才能从那张table上得到所有的行呢 product_category_id 包含特定值?
例如,如果table是这样的:

|  product_id   |   product_category_id  |....
|      1        |           1,3,4        |....
|      2        |           2,5          |....
|      3        |           2,3,6        |....

我需要所有的排 product_category_id=3 ,那么它应该会找到我的第一排和第三排。
注意:这与函数相反

SELECT * FROM `product` WHERE `product_category_id` IN (1,2,3);
rpppsulh

rpppsulh1#

你需要使用 find_in_set() 功能。yii 2.0示例:

$products = Product::find()
    ->andWhere(new Expresssion('FIND_IN_SET(:category_id, product_category_id)', [
        ':category_id' => $categoryId,
    ]))
    ->all();

yii 1.1示例:

$products = Product::model()
    ->findAll('FIND_IN_SET(:category_id, product_category_id)', [
        ':category_id' => $categoryId,
    ]);
``` `FIND_IN_SET(str,strlist)` 返回范围为的值 `1` 至 `N` 如果字符串 `str` 在字符串列表中 `strlist` 包括 `N` 子字符串。字符串列表是一个由,个字符分隔的子字符串组成的字符串。如果第一个参数是常量字符串,第二个参数是类型为 `SET` ,的 `FIND_IN_SET()` 使用位运算优化函数。退货 `0` 如果 `str` 不在 `strlist` 或者如果 `strlist` 是空字符串。退货 `NULL` 如果其中一个参数是 `NULL` . 如果第一个参数包含逗号,则此函数不能正常工作( `,` )性格。
ddhy6vgd

ddhy6vgd2#

在mysql中使用group\u concat();表中的所有行加在一行中;

相关问题