我有一个
order
表和一个 payment
表,其中将多个付款连接到一个订单。
下单
id | 名字 |
---|---|
1 | 订单1 |
2 | 订单2 |
付款
id | 订单_id | 金额 |
---|---|---|
1 | 1 | 2000 |
2 | 1 | 3000 |
3 | 2 | 500 |
4 | 2 | 100 |
我想要
SELECT
付款SUM
大于或小于特定amount
的所有订单。我怎样才能做到这一点?
我想我需要
JOIN
表格,但我不确定如何 SUM
amount
表格中的 payment
。我试过这个:
SELECT * FROM "order"
JOIN payment ON payment.order_id = payment.id
WHERE (SELECT SUM(amount) FROM payment) > 2000
这不会导致任何错误,但我认为结果不正确。我期望只返回“订单 1”。我需要以某种方式使用
GROUP BY
或 HAVING
吗?
使用子查询:
SELECT * FROM "order"
JOIN payment ON payment.order_id = payment.id
WHERE "order".id in (
SELECT order_id
FROM payment
GROUP BY 1
HAVING SUM(amount) > 2000
)