我在数据库表中
a | 1
a | 2
a | 3
a | 4
我应该如何仅使用SELECT查询返回:
a | 4
我尝试过使用不同和最大值的几种组合,但似乎都无关紧要。
答案 0 :(得分:7)
SELECT MAX(a) AS a FROM <TABLE>
编辑:我认为“a”是列的名称,如果是另一列,请使用
SELECT col1, MAX(col2) FROM <TABLE> GROUP BY col1
每个col1值将返回一行。如果那里有其他值(如b,c),则取决于你想要的是什么。
答案 1 :(得分:5)
查询是这样的:
select * from yourTable
where B = (select max(B) from yourTable);
答案 2 :(得分:4)
我假设你不只是想得到一个| 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
答案 3 :(得分:2)
您可以使用分析函数(假设name列包含'a',value列包含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
答案 4 :(得分:1)
假设您的桌子T有两列C1和C2,您是否按照以下方式尝试过?
select C1, C2 from T where C2 in (select max(C2) from T)
编辑 - 我尝试了我的以及其他建议的答案,令我惊讶的是,这个对我来说最好,即使我必须在子查询中进行全表扫描。如果你有你想要的东西,请你与我们分享,或者标出最佳答案?
答案 5 :(得分:1)
试试这样。
select Col_A,Col_B
from Table_X
where Col_B =(select max(Col_B) from Table_X)
答案 6 :(得分:-2)
如果你给出的a是表中的值,那么你可以使用
select column_name, max(coulumn_b) from table_name