用 JOIN 显示 MAX 记录

Display the MAX record with JOIN

我要select最高交易金额和相应的专辑名称到那个金额。

这是我目前拥有的:

SELECT a.AlbumName, MAX(t.TransAmt) AS HighestSale
FROM TRANSACTIONS t 
JOIN COLLECTIONS c ON c.CollectionID = t.CollectionID
JOIN ALBUMS a ON a.AlbumID = c.AlbumID
GROUP BY a.AlbumName

我知道我需要一个 HAVING,但我不确定如何实现它。

这是我目前得到的:

专辑名称 最高销售额
卡萨达加 10.00
我走线 13.00
甜蜜复仇 14.00
宽恕之树 12.00

我只想看 HighestSale (14.00),然后是 AlbumName (Sweet Revenge)

您可以使用 ORDER BY 并获取一行来执行此操作。在标准 SQL"

SELECT a.AlbumName, t.TransAmt AS HighestSale
FROM TRANSACTIONS t JOIN
     COLLECTIONS c
     ON c.CollectionID = t.CollectionID JOIN
     ALBUMS a
     ON a.AlbumID = c.AlbumID
ORDER BY t.TransAmt DESC
OFFSET 0 ROW FETCH FIRST 1 ROW ONLY;

有些数据库不支持标准的 FETCH 子句,因此您可能需要 LIMITSELECT TOP (1) 或其他内容。

这个也可以

SELECT a.AlbumName, MAX(t.TransAmt) AS 
HighestSale
FROM TRANSACTIONS t 
JOIN COLLECTIONS c ON c.CollectionID = 
t.CollectionID
JOIN ALBUMS a ON a.AlbumID = c.AlbumID
WHERE t.TransAmt = (SELECT MAX(TransAmt) 
FROM TRANSACTIONS) 
GROUP BY a.AlbumName