gpt4 book ai didi

mysql - 从一个查询的结果中查找满足另一要求的行

转载 作者:行者123 更新时间:2023-11-29 07:46:42 26 4
gpt4 key购买 nike

我有下表,product_taxonomy_id:

| product_id | taxonomy_id | value_id |
+------------+-------------+----------+
| 1 | 2 | 4 |
| 1 | 1 | 1 |
| 2 | 1 | 1 |
| 2 | 3 | 8 |
| 3 | 2 | 5 |
| 3 | 1 | 2 |
| 4 | 1 | 1 |
| 4 | 2 | 4 |
| 4 | 3 | 8 |

我想要获取具有taxonomy = 1且value_id = 1并且taxonomy = 2且value_id = 4的product_ids。

满足第一个要求的产品是:1、2、4。

从中,满足第二个要求的要求是:1、4

我可以使用以下查询来完成此操作:

SELECT DISTINCT `product_id` FROM product_taxonomy_value
INNER JOIN (SELECT DISTINCT `product_id` FROM product_taxonomy_value WHERE `taxonomy_id` = 1 AND `value_id` = 1) a USING (`product_id`)
INNER JOIN (SELECT DISTINCT `product_id` FROM product_taxonomy_value WHERE `taxonomy_id` = 2 AND `value_id` = 4) b USING (`product_id`)

有更好的解决方案吗?

最佳答案

我认为你应该为此使用子查询。首先,将其分解成碎片,然后将它们重新组合在一起。

您想要获取taxonomy_id 为1 且value_id 为1 的product_ids。您可以使用简单的WHERE 子句来实现此目的:

SELECT DISTINCT product_id
FROM product_taxonomy_value
WHERE taxonomy_id = 1 AND value_id = 1;

现在,您希望从中获得满足其他要求的结果。我要做的是编写第二个查询来获取满足第二个要求的 id:

SELECT DISTINCT product_id
FROM product_taxonomy_value
WHERE taxonomy_id = 2 AND value_id = 4;

并且您可以添加一个子查询要求,以确保第一个查询也返回第二个查询返回的 id,如下所示:

SELECT DISTINCT product_id
FROM product_taxonomy_value
WHERE taxonomy_id = 2 AND value_id = 4 AND product_id IN(
SELECT DISTINCT product_id
FROM product_taxonomy_value
WHERE taxonomy_id = 1 AND taxonomy_id = 1);

我在SQL Fiddle中运行了这个,它比您的第一个快得多,但两者都返回相同的结果。

关于mysql - 从一个查询的结果中查找满足另一要求的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27570493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com