mysql - 使用 GREATEST() 方法选择第二大

标签 mysql sql

有没有办法从多个列中选择最大和第二大的数字?

例子:

Col1 = 0;
Col2 = 4;
Col3 = 6;
Col4 = 3;

我最大的是 6,其次是 4。

我正在尝试实现这样的东西:

SELECT GREATEST(Col1, Col2, Col3, Col4) AS High, 
       GREATEST(Col1, Col2, Col3, Col4) AS Low 
       WHERE Low < High FROM tbl;

最佳答案

对于 4 列,您可以这样做:

select
  greatest(col1, col2, col3, col4) high,
  greatest(col1, col2, col3) + 
  greatest(col1, col2, col4) + 
  greatest(col1, col3, col4) + 
  greatest(col2, col3, col4) -  
  3 * greatest(col1, col2, col3, col4) low
from tablename 

您将 3 列的所有组合中的最大值相加,然后减去所有乘以 3 的最大值,因为在 4 种组合中,3 将是所有组合中最大值的结果。
查看demo .
结果:

| high | low |
| ---- | --- |
| 6    | 4   |

关于mysql - 使用 GREATEST() 方法选择第二大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57172585/

相关文章:

php - 如何管理从多个表中选择大量数据?

mysql - 在 Windows Phone 7 上使用 MySQL 数据库?

sql - Redshift - 除以零误差

mysql - select 语句返回一部分结果

php - 从数组中获取Mysql字段

python - 定期查找具有最高列值的 n 行

mysql - 在 mysql 中查找确切的值

c# - 检查行是否已在 SQL 中更新的最佳方法

php - 用新外键替换列值的方法?

c# - 我无法在我的简单网页中查看我的 Crystal 报告