1

我的数据库表中有

一个 | 1

一个 | 2

一个 | 3

一个 | 4

我应该如何仅使用 SELECT 查询返回:

一个 | 4

我尝试了几种具有不同值和最大值的组合,但似乎都无关紧要。

4

7 回答 7

7
SELECT MAX(a) AS a FROM <TABLE>

编辑:我认为“a”是列的名称,如果是另一列,请使用

SELECT col1, MAX(col2) FROM <TABLE> GROUP BY col1

每个 col1 值将返回一行。如果那里有其他值(如 b、c),这取决于你想要什么。

于 2013-08-21T10:37:18.080 回答
5

查询是这样的:

select * from yourTable 
where B = (select max(B) from yourTable);
于 2013-10-21T11:49:41.907 回答
4

我假设您不只是想获得 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
于 2015-09-18T06:52:27.347 回答
2

您可以为此使用分析函数(假设名称列包含“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
于 2013-08-21T10:40:03.690 回答
1

像这样试试。

select Col_A,Col_B
from Table_X
where Col_B =(select max(Col_B) from Table_X)
于 2013-10-10T03:52:42.537 回答
1

假设您的表 T 有两列 C1 和 C2,您是否尝试过以下方式?

select C1, C2 from T where C2 in (select max(C2) from T)

编辑 - 我尝试了我的以及其他建议的答案,令我惊讶的是,这个对我来说效果最好,即使我必须在子查询中进行全表扫描。如果你有你想要的东西,你能和我们分享,或者标记最佳答案吗?

于 2013-08-21T10:44:34.977 回答
-3

如果您给出的 a 是表中的值,那么您可以使用

select column_name, max(column_b) from table_name
于 2013-08-21T13:35:44.040 回答