Column1 | Column2
--------+--------
1 | 1
3 | 2
1 | 3
2 | 1
2 | 4
我想要column1的最大值,然后是column2的最大值:在这个例子中 - > 3:2
答案 0 :(得分:2)
我会使用order by
:
select column1, column2
from t
order by column1 desc, column2 desc
fetch first 1 row only;
我看到你正在使用MS Access,所以这就是:
select top (1) column1, column2
from t
order by column1 desc, column2 desc;
这种方法的唯一挑战是,如果数据中有重复项,可能会返回多行。如果这是一个问题,请在order by
中包含唯一ID作为最后一个密钥:
order by column1 desc, column2 desc, id;
或使用聚合:
select max(column1), max(column2)
from (select top (1) column1, column2
from t
order by column1 desc, column2 desc
) as t;
max()
仅用于将结果集减少到单行(如果出现重复)。因为子查询中的所有值都是相同的,所以几乎任何聚合函数都可以工作。
答案 1 :(得分:2)
对于您的样本数据,这将有效:
SELECT Column1, Column2
FROM yourTable
WHERE Column1 = (SELECT MAX(Column1) FROM yourTable)
根据您的评论
之后是column2的最大值
你可能想要这个:
SELECT Column1, MAX(Column2) as Column2
FROM yourTable
WHERE Column1 = (SELECT MAX(Column1) FROM yourTable)
GROUP BY Column1
这会处理包含MAX(Column1)
的多行的情况,并仅在MAX(Column2)
答案 2 :(得分:2)
如果您希望整行的最大值为column1
,请尝试此操作...
SELECT TOP 1 *
FROM tablename
ORDER BY column1 DESC
示例日期
+---------+---------+
| Column1 | Column2 |
+---------+---------+
| 1 | 1 |
| 3 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 4 |
+---------+---------+
输出
+----------+----------+
| Column1 | Column2 |
+----------+----------+
| 3 | 2 |
+----------+----------+
如果您想要column1
和column2
的最大值,请尝试此操作...
SELECT MAX(column1) as column1,
MAX(column2) as column2
FROM tablename
示例日期
+---------+---------+
| Column1 | Column2 |
+---------+---------+
| 1 | 1 |
| 3 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 4 |
+---------+---------+
输出
+----------+----------+
| Column1 | Column2 |
+----------+----------+
| 3 | 4 |
+----------+----------+
答案 3 :(得分:1)
使用以下内容:
select column1, column2
from tab
where column1 = ( Select max(column1) from tab );
答案 4 :(得分:0)
我很难解释您的表格,但SQL中有内置函数可以帮助您进行查询。
SELECT MAX(column1), MAX(column2)
FROM table_name
WHERE condition;