Select 多列的最小值

Select min value from multiple column

我在数据库中有以下 SCORE table:

        id | val1 | val2 | val3 | val4 |
        1     40    100    80      90
        2     90     70    90      45
        3     50     60    100     30
        4     20     30    30      40

我想 select 列 val1、val2 和 val3 中的最小值并使用此代码将其存储在变量中:

int maxVal = 0;
Statement s2 = conn.createStatement();
s2.execute("SELECT min(val1,val2,val3) FROM SCORE");    
ResultSet rs1 = s2.getResultSet(); // 
while ( rs1.next() ){
        maxVal = rs1.getDouble(1);
}  

遇到错误。有没有一种简单的方法可以从 table 中的超过 1 列中获取最小值?

如果您使用的是 Java 8,您可以从 Java 代码中获取最小值,如下所示:

Statement stmt = conn.createStatement();  
ResultSet rs = stmt.executeQuery("SELECT min(val1), min(val2), min(val3) FROM SCORE");

if (rs.next()) {
    minValue = DoubleStream.of(
            rs.getDouble(1), rs.getDouble(2), rs.getDouble(3)
    ).min().getAsDouble();
}

如果您使用的小于 Java 8,您可以使用:

if (rs.next()) {
    minValue = Math.min(Math.min(rs.getDouble(1), rs.getDouble(2)), rs.getDouble(3));
}

我想到了

SELECT MIN(val)
FROM (SELECT MIN(val1) AS val FROM SCORE
      UNION SELECT MIN(val2) FROM SCORE
      UNION SELECT MIN(val3) FROM SCORE)