Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mySQL搜索同一列中的多个值_Mysql_Select - Fatal编程技术网

mySQL搜索同一列中的多个值

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

我试图基于同一个表中的多个值实现一个简单的输出,并返回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的行(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,这是所述产品的所有属性。因为它们是波动的,所以它们位于一个表中,其中每一行都是一个属性。我似乎无法做到的是匹配倍数。我是否能够添加更多条件。例如,使用此选项进行过滤?