繁体   English   中英

MySql:在联接表中返回MAX值

[英]MySql: Returning MAX Value in joined tables

我这里有3张桌子。 有客户,订单和客户订购的物品。 这些被命名为:CustomersTbl,OrdersTbl,OrderedItemTbl。

我正在安排所有订单及其总价,并显示发出订单名称的客户。

select * from productstbl;
select * from ordereditemtbl;
select * from orderstbl;

select 
    ordereditemtbl.ItemID,
    customerstbl.CustomerID,
    customerstbl.FirstName,
    orderstbl.OrderID,
    orderstbl.OrderDate,
    sum(ordereditemtbl.amount * productstbl.Price) as totalPrice
from
    ordereditemtbl
        inner join
    ProductsTbl ON ordereditemtbl.productID = productstbl.productID
        inner join
    orderstbl ON ordereditemtbl.orderID = ordereditemtbl.orderID
        inner join
    customerstbl ON customerstbl.customerID = orderstbl.customerID#'2'
group by ordereditemTbl.OrderID
order by totalPrice desc;

现在,我想单独显示具有最高TotalPrice的订单。 如何获得最大值? 有没有办法使用MAX()函数?

让我们来看看。 查看是否可行:

SELECT * FROM 
(
select 
    ordereditemtbl.ItemID,
    customerstbl.CustomerID,
    customerstbl.FirstName,
    orderstbl.OrderID,
    orderstbl.OrderDate,
    sum(ordereditemtbl.amount * productstbl.Price) as totalPrice,
    @rownum AS row_number
from
    ordereditemtbl
        inner join
    ProductsTbl ON ordereditemtbl.productID = productstbl.productID
        inner join
    orderstbl ON ordereditemtbl.orderID = ordereditemtbl.orderID
        inner join
    customerstbl ON customerstbl.customerID = orderstbl.customerID#'2'
        inner join
    (SELECT @rownum := 0) dummy
group by ordereditemTbl.OrderID
ORDER BY totalPrice desc;
)
WHERE row_number=0

这会分配一个行号并选择第一行。

干杯,拉姆

根据abl的建议,我在代码末尾添加了以下内容:

order by totalPrice desc LIMIT 1;

显示所创建表的第一行,以降序显示。 谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM