gpt4 book ai didi

php - 查找联合中的记录 - MySQL

转载 作者:行者123 更新时间:2023-11-29 12:20:49 26 4
gpt4 key购买 nike

我可能以错误的方式处理这个问题,但这是背景。我有一个产品表和一个产品之间的关系表 - 例如,关系表可能如下所示:

ID    PRODUCT 1   PRODUCT 2
1 1 2
2 1 3
3 3 4

因此,在上面的示例中,产品 id 1 与产品 2 和 3 相关,产品 id 2 与 1 相关,产品 id 3 与 1 和 4 相关(因为关系可以在第 1 列或第 2 列中) )

因此,我在产品页面上想要查找与当前产品相关的产品的详细信息。我的直觉告诉我做这样的查询:

SELECT p.* FROM products p 
WHERE p.id IN (
(SELECT product_1 AS related FROM relations WHERE product_2 = :this_product)
UNION
(SELECT product_2 AS related FROM relations WHERE product_1 = :this_product)
)

但是由于 UNION,这给了我一个语法错误。

那么,我做的这一切都是错误的吗?应该采取完全不同的方法,还是我只是用我的查询做了一个小语法嘘声?

最佳答案

要获取产品列表,您可以执行以下操作:

select (case when :this_product = product_1 then product_2 else product1 end)
from relations r
where :this_product in (product_1, product_2)

然后您可以重新加入产品

或者,使用exists。效率更高:

select p.*
from products p
where exists (select 1
from relations r
where r.product_1 = :this_product and p.id = r.product_2
) or
exists (select 1
from relations r
where r.product_2 = :this_product and p.id = r.product_1
);

关于php - 查找联合中的记录 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29048873/

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