SQL查询:选择同一行中最多2列

时间:2018-05-02 15:08:54

标签: sql database ms-access select

Column1 | Column2
--------+-------- 
1       |    1
3       |    2
1       |    3
2       |    1
2       |    4

我想要column1的最大值,然后是column2的最大值:在这个例子中 - > 3:2

5 个答案:

答案 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 |
+----------+----------+

如果您想要column1column2的最大值,请尝试此操作...

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 );

SQL Fiddle Demo

答案 4 :(得分:0)

我很难解释您的表格,但SQL中有内置函数可以帮助您进行查询。

SELECT MAX(column1), MAX(column2)
FROM table_name
WHERE condition;