我试图在同一个表中基于多个值实现简单输出,并且它返回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。
由于
阿迪
答案 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