我在MYSQL資料庫中有3個表
?ORDER
order_id | order_date
-------------------------
1 | 20210920
2 | 2021-0921
產品
product_id | product_price
-------------------------
1 | 30
2 | 34
3 | 39
4 | 25
ORDER_PRODUCTS
product_id | order_id
-------------------------
1 | 1
2 | 1
1 | 2
4 | 2
現在我想知道當我給一個特定的產品id group by order_id時,特定訂單中所有產品的最小和最大價格。
EX:
order_id | min_price | max_price
-----------------------------------------
1 | 30(p_id=1) | 34(p_id=2)
2 | 25(p_id=4) | 30(p_id=1)
uj5u.com熱心網友回復:
你可以使用下面的方法:
SELECT
op.order_id。
MIN(p.product_price) as min_price。
MAX(p.product_price) as max_price
FROM[/span
ORDER_PRODUCTS op
INNER JOIN
產品 p ON op.product_id = p.product_id
GROUP by
op.order_id
編輯1
。由于它與
有關現在我想知道一個特定訂單中所有產品的最低和最高價格 特定的順序
你可以使用where子句來只考慮一個特定的訂單
。 SELECT
op.order_id。
MIN(p.product_price) as min_price。
MAX(p.product_price) as max_price
FROM[/span
ORDER_PRODUCTS op
WHERE
op.order_id = <insert order id here>
INNER JOIN
產品 p ON op.product_id = p.product_id
GROUP by
op.order_id
或者,如果是你想確定有特定產品的訂單的最低和最高價格,你可以修改你的where子句,如下所示,使用一個帶子查詢的IN
SELECT
op.order_id。
MIN(p.product_price) as min_price。
MAX(p.product_price) as max_price
FROM[/span
ORDER_PRODUCTS op
WHERE
op.order_id IN (
SELECT inc.order_id
FROM ORDER_PRODUCTS inc
WHERE inc.product_id = <insert product id here>
)
INNER JOIN
產品 p ON op.product_id = p.product_id
GROUP by
op.order_id
或者干脆使用帶有case陳述句的having子句來過濾
SELECT
op.order_id。
MIN(p.product_price) as min_price。
MAX(p.product_price) as max_price
FROM[/span
ORDER_PRODUCTS op
INNER JOIN
產品 p ON op.product_id = p.product_id
GROUP by
op.order_id
HAVING[/span
SUM(
CASE WHEN op. product_id = <insert product id here> THEN 1 END
) > 0 )
NB。請在測驗時用實際值替換<insert product id here>和<insert order id here>。
讓我知道這是否對你有用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334003.html
標籤:
