我正在尝试比较表中的数据并输出每种类型的最小值。我知道 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 查询来完成这项工作?提前致谢。
最佳答案
这是一个简单的查询,只需使用 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
。
关于mysql - 比较不同列时获得最低值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19644049/