我想知道如何从单行获取最小数值,例如:
我的表:
|col a|col b|col c|some other col|some other col|
-------------------------------------------------
| 13 | 2 | 5 | 0 | 0 |
问题是:如何从col a,col b和col c获取最小值(我想忽略其他列。
我试过这个: 从表WHERE id = 0
中选择MIN(col a,col b,col c)但是,这并不起作用。
任何帮助将不胜感激。
答案 0 :(得分:1)
MySQL中的正确功能是least()
:
SELECT least(cola, colb, colc)
FROM table
WHERE id = 0;
非常重要:这假定所有值都是非NULL。如果您有NULL
个值,则least()
会返回NULL
。
如果您需要考虑这一点,可以使用coalesce()
。 。 。一种方法是使用最高值:
SELECT nullif(least(coalesce(cola, 999999), coalesce(colb, 999999), coalesce(colc, 999999)), 999999)
FROM table
WHERE id = 0;
或者,对列中的值使用coalesce()
:
SELECT least(coalesce(cola, colb, colc), coalesce(colb, colc, cola), coalesce(colc, colb, cola))
FROM table
WHERE id = 0;