[英]Oracle SQL Return Single Row Based On Max Value of a Column
我在數據庫表中
一個| 1個
一個| 2
一個| 3
一個| 4
我應該如何僅使用SELECT查詢返回:
一個| 4
我嘗試了幾種不同的值和最大值的組合,但似乎都無關緊要。
SELECT MAX(a) AS a FROM <TABLE>
編輯:我以為“ a”是列的名稱,如果它是另一列,請使用
SELECT col1, MAX(col2) FROM <TABLE> GROUP BY col1
每個col1值將返回一行。 如果那里還有其他值(如b,c),則取決於您要的內容。
查詢是這樣的:
select * from yourTable
where B = (select max(B) from yourTable);
我假設您不只是想要得到a | 4,但是還有其他類似的組合,例如b | 3,c | 6等,因此,假設列為c1,c2,則查詢為
select * from table_1 where (c2) in (select max(c2) from table_1 group by c1)
如果你的桌子像
C1|C2
a|1
a|2
a|4
b|3
c|2
c|6
輸出會像
a|4
b|3
c|6
您可以為此使用解析函數(假設名稱列包含'a',而值列包含1,2,3,4,...):
select * from (
select name, value, rownum over (partition by 1 order by value desc)
as rn
from mytable)
where rn = 1
或者,您可以使用普通的舊ORDER BY:
select * from (
select name, value
from mytable
order by value desc)
where rownum = 1
假設您的表T有兩列C1和C2,您是否按照以下方式嘗試過?
select C1, C2 from T where C2 in (select max(C2) from T)
編輯-我嘗試了我的以及其他建議的答案,令我驚訝的是,即使我必須在子查詢中進行全表掃描,該選項也對我來說效果最好。 如果您有想要的東西,可以與我們分享一下,或者標記為最佳答案嗎?
嘗試這樣。
select Col_A,Col_B
from Table_X
where Col_B =(select max(Col_B) from Table_X)
如果給定的a是表中的值,則可以使用
select column_name, max(coulumn_b) from table_name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.