我的数据库表中有
一个 | 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
像这样试试。
select Col_A,Col_B
from Table_X
where Col_B =(select max(Col_B) from Table_X)
假设您的表 T 有两列 C1 和 C2,您是否尝试过以下方式?
select C1, C2 from T where C2 in (select max(C2) from T)
编辑 - 我尝试了我的以及其他建议的答案,令我惊讶的是,这个对我来说效果最好,即使我必须在子查询中进行全表扫描。如果你有你想要的东西,你能和我们分享,或者标记最佳答案吗?
如果您给出的 a 是表中的值,那么您可以使用
select column_name, max(column_b) from table_name