簡體   English   中英

Oracle SQL基於列的最大值返回單行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM