【问题标题】:Stuck with Mysql IN Operator卡在 Mysql IN 运算符上
【发布时间】:2016-12-22 13:22:28
【问题描述】:

我有下表:

id_attribute  id_product_attribute
1             1
13            1
4             2
13            2

我想获取具有id_attribute 113id_product_attribute
我的查询如下:

SELECT id_product_attribute 
  FROM ps_product_attribute_combination 
 WHERE id_product_attribute = 1 
   AND id_attribute IN (1,13) 
 GROUP 
    BY id_product_attribute  

上述查询也返回id_product_attribute 2 而不仅仅是1。我怎样才能做到这一点?

谁能帮忙解决这个问题?
提前致谢!

【问题讨论】:

  • 不可能。除了您提出的问题之外,您可能有一些不同的数据。
  • HAVING COUNT(*) = 2(并删除 WHERE 子句)

标签: mysql


【解决方案1】:

这些链接可能会对您有所帮助:

Matching all values in IN clause

还有

MySQL in-operator must match all values?

从上面你可以使用:

SELECT id_product_attribute 
  FROM ps_product_attribute_combination 
 WHERE id_product_attribute = 1 
   AND id_attribute IN ('1','13') 
 GROUP 
    BY id_product_attribute  
    HAVING COUNT(DISTINCT ps_product_attribute_combination.id_attribute) = 2

所以它会返回 IN 的结果,既是id_attribute,又是在id_attribute 列中出现两次(使用Having 子句)。


或者:

您的查询表明:

SELECT id_product_attribute 
  FROM ps_product_attribute_combination 
 WHERE id_product_attribute = 1 

所以实际上你总是选择id_product_attribute = 1。所以 MySQL 结果永远是<id_product_attribute value>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    相关资源
    最近更新 更多