gpt4 book ai didi

Mysql join where value or null

转载 作者:行者123 更新时间:2023-11-30 23:06:21 26 4
gpt4 key购买 nike

我有一张 table PROD

ID    NAME
1 Apple
2 Banana

以及相对表 PRICES ,具有全局价格(ID_USER 为 Null)或每用户价格 (ID_USER)

PROD_ID    USER_ID   PRICE
1 null 10
1 5 8

现在,我需要一个查找所有产品和相关价格的查询,

要注意的是,只有在有用户价格的情况下,我才尝试检索用户价格,否则检索全局价格

SELECT PROD.* , PRICES.* FROM PROD
LEFT JOIN PRICES ON PROD.ID_PROD = PRICES.ID_PROD
WHERE PRICES.USER_ID IS NULL OR PRICES.USER_ID = 5

此查询返回 2 行(prod 与 2 个价格相连)

有没有一种方法可以在一次查询中检索产品的确切价格?

谢谢!!

编辑:在连接中,只有当该行存在时我才需要每个用户的价格行(最后一个),否则我需要检索具有全局价格的行,这可能吗?

最佳答案

SELECT
prod.*,
COALESCE(p_user, p_default) As Price
FROM
Prod INNER JOIN (SELECT
PROD_ID,
MAX(CASE WHEN USER_ID=5 THEN Price END) p_user,
MAX(CASE WHEN USER_ID IS NULL THEN Price END) p_default
FROM
Prices
GROUP
BY PROD_ID) m_uid
ON Prod.ID = m_uid.Prod_ID

请参阅 fiddle here .

关于Mysql join where value or null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21726407/

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