gpt4 book ai didi

php - MYSQL 在条件 1 上加入,在条件 2 上加入

转载 作者:行者123 更新时间:2023-11-29 01:29:13 25 4
gpt4 key购买 nike

我有两个表,我想在其中JOIN 一个与另一个。 JOIN 工作正常,但我返回了两条记录。这是(查看我的查询)正确的,但我需要根据条件返回两条记录之一。这可以通过单个查询来管理吗?

oc_order_product:

product_id | name  | quantity | order_id | store_url
51 | prod1 | 1 | 17 | http://www.opencarttest.com/
48 | prod2 | 3 | 17 | http://www.opencarttest.com/

产品:

oc_product_id | price | store_url
51 | 50.00 | http://www.opencarttest.com/
51 | 89.95 |
48 | 15.00 |

我当前的查询:

SELECT
oop.product_id,
oop.name,
oop.quantity,
p.price,
p.store_url
FROM
oc_order_product AS oop
JOIN
product AS p
ON
p.oc_product_id = oop.product_id
WHERE
oop.order_id='17' AND oop.store_url='http://www.opencarttest.com/'

返回:

product_id | name  | price | store_url
51 | prod1 | 50.00 | http://www.opencarttest.com/
51 | prod1 | 89.95 |
48 | prod2 | 15.00 |

但我只需要这个:

product_id | name  | price | store_url
51 | prod1 | 50.00 | http://www.opencarttest.com/
48 | prod2 | 15.00 |

我只需要一个来自与 oc_product_id 匹配的产品的结果。但它可以是这两种产品之一。我需要 store_url 等于 oc_order_product.store_url 的产品,或者没有 store_url 的产品。

编辑:添加尾部斜杠

最佳答案

这会为您提供所需的内容,但会牺牲性能:

SELECT
oop.product_id,
oop.name,
oop.quantity,
p.price,
p.store_url
FROM
oc_order_product AS oop
JOIN
product AS p
ON
p.oc_product_id = oop.product_id
and
(p.store_url = oop.store_url
or
not exists (select 1 from product where oc_product_id=p.oc_product_id and store_url is not null)
)
WHERE
oop.order_id='17' AND oop.store_url='http://www.opencarttest.com'

这是 sqlfiddle .

请注意,对于问题中显示的特定数据,这将不起作用 - 您自己的查询也不会起作用 - 因为您的 URL 在一个表中带有尾部斜杠,而在另一个表中没有。在我的示例中,我删除了所有位置的尾部斜线。

关于php - MYSQL 在条件 1 上加入,在条件 2 上加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22671948/

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