我在 MYSQL 資料庫中有 3 個表
命令
order_id | order_date
-------------------------
1 | 2021-09-20
2 | 2021-09-21
產品
product_id | product_price
------------------------------
1 | 30
2 | 34
3 | 39
4 | 25
訂購_產品
product_id | order_id | discount_price
------------------------------------------
1 | 1 | null
2 | 1 | 18
1 | 2 | null
4 | 2 | null
現在,當我按 order_id 給出特定的 product_id(我需要具有提供的產品的所有訂單)組時,我想知道特定 ORDER 記錄中所有產品的最低和最高價格。我獲得了所需的資料,但這是棘手的部分,該ORDER_PRODUCTS表將包含該特定 ORDER 的特定產品的 discounted_price。
因此,計算MIN時,最大值我想discount_price按優先順序排列,而不是product_price如果該產品沒有任何discount_price那么product_price應該回傳。
前任:
order_id | min_price | max_price
------------------------------------------------------
1 | 18(p_id=2)(discount price) | 30(p_id=1)
2 | 25(p_id=4) | 30(p_id=1)
uj5u.com熱心網友回復:
如果我理解正確,您正在尋找該IfNull()功能,您可以在這里閱讀
您可以簡單地將IfNull()函式括在適當的聚合函式中
select o.order_id,
min(ifnull(discount_price,product_price)),
max(ifnull(discount_price,product_price))
from PRODUCTS p
inner join ORDER_PRODUCTS op on op.product_id =p.product_id
inner join ORDER o on o.order_id = op.order_id
group by o.order_id, p.product_id
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/322816.html
標籤:Python mysql sql sqlalchemy
