mySQL在同一列中搜索多个值

时间:2016-02-24 19:30:57

标签: mysql select

我试图在同一个表中基于多个值实现简单输出,并且它返回Prod ID:

我用过

SELECT * FROM
dh_product_properties
WHERE prod_id IN (SELECT prod_id FROM dh_product_properties
       WHERE (prod_prop_value = 'iPad Mini 3' AND
       prod_prop_value = 'Silver'));

希望它会返回任何具有Silver的行(Prod_id)和iPad Mini 3。

以下是该表的示例:

+------------+--------------------------------------+----------+--------------------------------------+
| id,prod_id |                prod_                 |   sku    |           prod_prop_value            |
+------------+--------------------------------------+----------+--------------------------------------+
|       3946 | ddd329ec-4323-4381-b683-09e3e2b71b34 | Apple033 | Grade A iPad Mini: Fully packaged... |
|       3947 | ddd329ec-4323-4381-b683-09e3e2b71b34 | Apple033 | 3                                    |
|       3948 | ddd329ec-4323-4381-b683-09e3e2b71b34 | Apple033 | Retina Display                       |
|       3949 | ddd329ec-4323-4381-b683-09e3e2b71b34 | Apple033 | Finger Print Sensor                  |
|       3999 | 85799e94-e9f9-4689-95a5-2a2e742af43d | Apple011 | 32GB                                 |
|       4000 | 85799e94-e9f9-4689-95a5-2a2e742af43d | Apple011 | Bluetooth                            |
|       4001 | 85799e94-e9f9-4689-95a5-2a2e742af43d | Apple011 | TRUE                                 |
|       4002 | 85799e94-e9f9-4689-95a5-2a2e742af43d | Apple011 | Integrated Speakers                  |
|       4003 | 85799e94-e9f9-4689-95a5-2a2e742af43d | Apple011 | White with Silver                    |
|       4004 | 85799e94-e9f9-4689-95a5-2a2e742af43d | Apple011 | Built-In Rear Camera                 |
|       4005 | 85799e94-e9f9-4689-95a5-2a2e742af43d | Apple011 | 100                                  |
+------------+--------------------------------------+----------+--------------------------------------+

在阅读其他人之后我也有了这个:

SELECT prod_id
FROM dh_product_properties
WHERE prod_prop_value = 'iPad Mini 3' AND prod_prop_value IN ('Silver') 
GROUP BY prod_id;

但我得到的所有记录都包含iPad Mini 3或Silver,而不是合并。

任何人都可以建议一种方法来做到这一点。我知道可以做到,但我不知道如何搜索。

我在谷歌尝试过: 带有AND多次的mysql mysql在一列中选择多个值

没有一个答案真的符合我的要求。

更新

如果我们使用上面的例子。 Apple033是iPad Mini 3,Apple011是iPad Mini 2.如果我们搜索iPad Mini 2,White with Silver,它应该只能带回Apple011。目前它没有带回任何东西,或者每件物品都带有白银和iPad Mini 2。

由于

阿迪

2 个答案:

答案 0 :(得分:0)

您是否尝试过此查询?如果我正确理解了您的问题,那么您可能希望返回包含单词/短语" Silver"和" iPad Mini 3"。这是对的吗?

SELECT prod_id FROM dh_product_properties WHERE (prod_prop_value LIKE '%iPad Mini 3%' AND prod_prop_value LIKE '%Silver%')

了解您在结果中寻找的内容将有助于制定正确的查询。

答案 1 :(得分:0)

如果您希望所有具有两种条件的组

,则需要过滤聚合过滤
SELECT  prod_ FROM dh_product_properties
GROUP BY  prod_
HAVING SUM(prod_prop_value = 'iPad Mini 3')>0
AND SUM(prod_prop_value = 'Silver')>0