在 MySQL 5.7 数据库中,我有以下 User
表:
姓名 | ID |
---|---|
大卫 | 1 |
弗兰克 | 2 |
以及以下 Order
表:
ID | 价格 | 用户 ID |
---|---|---|
1 | 55 | 1 |
2 | 68 | 1 |
3 | 50 | 1 |
4 | 10 | 2 |
对于每个用户,我想选择 ID 最大的订单价格。
我可以使用以下查询,由于嵌套子查询增加了额外的复杂性:
SELECT
User.Name,
last_user_order.Price
FROM User
LEFT JOIN (
SELECT Price, UserId FROM Order
ORDER BY Id DESC LIMIT 1
) AS last_user_order ON last_user_order.UserId = User.Id
此处存在许多问题,其中要选择的列与订购的列相同。因此,可以在第一个 MAX
语句中使用 SELECT
来避免子查询。在我的情况下是否可以避免子查询?
答案 0 :(得分:1)
SELECT User.Name,
( SELECT Order.Price
FROM Order
WHERE Order.UserId = User.Id
ORDER BY Order.Id DESC LIMIT 1 ) LastPrice
FROM User;