繁体   English   中英

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

[英]SQL query : select max of 2 columns of same row

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

我想要column1的最大值,然后是column2的最大值:在本示例中-> 3: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()仅用于将结果集减少为单行(如果有重复的话)。 因为子查询中的所有值都相同,所以几乎任何聚合函数都可以使用。

对于您的示例数据,这将起作用:

SELECT Column1, Column2
FROM yourTable
WHERE Column1 = (SELECT MAX(Column1) FROM yourTable)

根据您的评论

然后那第二列的最大值

您可能想要这样:

SELECT Column1, MAX(Column2) as Column2
FROM yourTable
WHERE Column1 = (SELECT MAX(Column1) FROM yourTable)
GROUP BY Column1

这可以处理具有MAX(Column1)多行的情况,并且仅返回具有MAX(Column2)的行中的行

如果您希望整行的最大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 |
+----------+----------+

使用以下内容:

select column1, column2
  from tab 
 where column1 = ( Select max(column1) from tab );

SQL小提琴演示

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM