mysql - 选择不返回实际值的 IN 子句中的值

标签 mysql

在下面的查询中

mysql> select
    ->     what_to_wear_under,
    -> (select group_concat(value) from eav_attribute_option_value where option_id in (what_to_wear_under) and store_id = 1  ) as what_to_wear_under
    -> from
    -> catalog_product_flat_1 where brief_coverage is not null and brief_coverage > 0 limit 1\G
*************************** 1. row ***************************
what_to_wear_under: 2028,2031,2032
what_to_wear_under: Churidar Kurtas
1 row in set, 2 warnings (0.00 sec)

当我在 (what_to_wear_under) 中使用 option_id 时,what_to_wear_under 具有三个值,它只给一个 id 赋值。

但如果我直接使用值,它会正确返回值

mysql> select     what_to_wear_under, (select group_concat(value) from eav_attribute_option_value where option_id in (2028,2031,2032) and store_id = 1  ) as what_to_wear_under from  catalog_product_flat_1 where brief_coverage is not null and brief_coverage > 0 limit 1\G
*************************** 1. row ***************************
what_to_wear_under: 2028,2031,2032
what_to_wear_under: Churidar Kurtas,Denims,Dresses
1 row in set (0.00 sec)

能否请您帮助我们如何修改查询一以获得三个值?

最佳答案

你不能比较 in 像这样的列,无论他包含以逗号分隔的值,它都会将他视为 1 值。

您可以为此使用 like(我不确定 mysql 语法,所以也许您必须使用 concat 对其进行调整):

select
->     what_to_wear_under,
-> (select group_concat(value) from eav_attribute_option_value where  what_to_wear_under like concat('%',option_id,'%') and store_id = 1  ) as what_to_wear_under
-> from
-> catalog_product_flat_1 where brief_coverage is not null and brief_coverage > 0 limit 1\G

关于mysql - 选择不返回实际值的 IN 子句中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35404763/

相关文章:

c# - 无法使用文本框输入进行查询

javascript - 如何设置 jquery onclick 函数以仅针对可编辑表中的特定表列或类?

MySQL:ORDER BY 值字符串中的位置

jquery - 无法从数据库获取记录并通过ajax加载到 View 中

mysql - 选择没有空值的列中的最后一个值

mysql - 非静态...静态什么?

php - 如何知道它是否通过 sql/php 中的 where 子句获得了行

php - 在 PHP 中确保传统转义函数 SQL 注入(inject)安全?

MySQL 注入(inject) - 使用 SELECT 查询来更新/删除

php - Laravel 5.8 尝试从数据库中查询阿拉伯语记录