比较不同的列时获得最低价值

时间:2013-10-28 20:03:34

标签: mysql sql join subquery min

我尝试比较表格中的数据并输出每种类型的最低值。我知道SQL中有一个MIN()函数,但它只能得到总体上最低的值,这不是我想要的。

我想获取整行的数据, Column1 中的值是最小的foreach类型。

这就是表格的样子:

Type        Column1         Column2
-------     --------        ---------
A           1               !!!
A           2               @@@
B           3               ###
B           4               $$$
C           5               %%%
C           6               ^^^

当我使用SELECT MIN(Value)时,我得到的结果如下:

Type        Column1         Column2
-------     --------        ---------
A           1               !!!

我使用了Linger建议的GROUP BY方法,但结果仍然与我想要的完全匹配:

Type        Column1         Column2
-------     --------        ---------
A           1               @@@
B           3               $$$
C           5               ^^^

然而,希望的结果是:

Type        Column1         Column2
-------     --------        ---------
A           1               !!!
B           3               ###
C           5               %%%

我如何编写SQL查询来完成这项工作?提前谢谢。

1 个答案:

答案 0 :(得分:1)

这是一个简单的查询,只需使用GROUP BY子句执行:

SELECT MTM.* FROM 
(
    SELECT MTS.Type, MIN(MTS.Values) AS SmallestValue
    FROM  MyTable AS MTS
    GROUP BY MTS.Type
) AS MainQ
INNER JOIN MyTable AS MTM 
ON MTM.UniqueID = MainQ.UniqueID

在上面的例子中,我正在执行MIN() GROUP BY查询,然后将结果连接到同一个表以拉出我需要的其余字段。您应该有一个唯一标识记录的字段。使用该字段代替上面的UniqueID