避免在表连接中使用子查询

时间:2021-01-12 09:00:08

标签: mysql left-join

在 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 来避免子查询。在我的情况下是否可以避免子查询?

1 个答案:

答案 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;
相关问题