mySQL搜索同一列中的多个值
我试图基于同一个表中的多个值实现一个简单的输出,并返回Prod ID: 我用过mySQL搜索同一列中的多个值,mysql,select,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')); 希望它能返回任何包含银色和iPadMini3的行(P
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'));
希望它能返回任何包含银色和iPadMini3的行(Prod_id)
以下是表格的示例:
+------------+--------------------------------------+----------+--------------------------------------+
| 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;
但我得到的所有记录要么是iPadMini3,要么是银牌,而不是组合
任何人都可以提出一种方法来做到这一点。我知道这是可以做到的,但我不知道如何搜索
我在谷歌上试过:
mysql支持多次访问和访问
mysql在一列中选择多个值
没有一个答案真正符合我的要求
更新
如果我们使用上面的例子。Apple033是iPadMini3,Apple011是iPadMini2。如果我们搜索的是白色带银色的iPadMini2,它应该只会带来Apple11。目前,它什么也没带回来,或者,每件商品都是白色加银色,或者是iPadMini2
谢谢
Addy您尝试过这个查询吗?如果我正确理解了你的问题,那么你希望返回任何包含单词/短语“Silver”和“iPadMini3”的行。对吗
SELECT prod_id FROM dh_product_properties WHERE (prod_prop_value LIKE '%iPad Mini 3%' AND prod_prop_value LIKE '%Silver%')
了解结果中要查找的内容将有助于创建正确的查询。如果希望所有组同时满足这两个条件,则需要进行聚合后筛选
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
SQL查询中缺少右括号。这只是一个复制粘贴错误吗?在第二个查询中,您尝试使用like而不是in.@BadAddy,显示应该如何显示预期的结果result@RomanPerekhrest你好。它应该只给我一个prod_id,在这里满足值条件。这是正确的。正如您可能注意到的,每行都有一个prod_id,这是所述产品的所有属性。因为它们是波动的,所以它们位于一个表中,其中每一行都是一个属性。我似乎无法做到的是匹配倍数。我是否能够添加更多条件。例如,使用此选项进行过滤?