好的,所以我看了其他解决方案没有任何帮助。所以这就是我想要做的。 我需要选择具有多列的行,其中一列中的值是最大值。
这里是样本数据
orderfileid item number item cost warehouse
1 1234 3.45 ATL
1 2345 1.67 DFW
3 2345 2.45 NYY
3 678 2.4 ORD
2 1234 1.67 DFW
我需要选择orderfileid为每个唯一商品编号
的最大行返回的数据集应该看起来像
orderfileid item number item cost warehouse
2 1234 1.67 DFW
3 2345 2.45 NYY
3 6789 2.4 ORD
我想我尝试了我能想到的选择max(orderfileid)的每个组合
任何帮助都会得到满足。 感谢
答案 0 :(得分:15)
您需要在子查询中找到MAX值,然后使用这些结果连接到主表以检索列。
SELECT t.OrderFileId, t.ItemNumber, t.ItemCost, t.Warehouse
FROM YourTable t
INNER JOIN (SELECT ItemNumber, MAX(OrderFileId) AS MaxOrderId
FROM YourTable
GROUP BY ItemNumber) q
ON t.ItemNumber = q.ItemNumber
AND t.OrderFileId = q.MaxOrderId
答案 1 :(得分:3)
select
t.*
from
table t
inner join (
select itemnumber, max(orderfileid) maxof
from table
group by itemnumber
) m on t.itemnumber = m.itemnumber
and t.orderfileid = m.maxof
答案 2 :(得分:1)
我甚至不会使用Max。只需组合GROUP BY和ORDER BY
SELECT * FROM orders GROUP BY item_number ORDER BY orderfileid DESC
然后最小化只更改为ASC
答案 3 :(得分:0)
尝试
SELECT * FROM `TABLE` WHERE orderfileid=(select max(orderfileid) from TABLE)
答案 4 :(得分:0)
你可以参考类似的问题,如何使用分区分组并在mysql中为每个分区选择一个
Deleting Rows: No Single Member Has More Than x Records
这与在Oracle中排名相似。我以前的帖子是为了oracle。我的坏..
答案 5 :(得分:-2)
我认为你要找的是“有”条款。看看this。
通过具有max(itemnumber)的orderfileid从MyTable组中选择orderfileid,max(itemnumber),itemcost,仓库;