Если это MySQL или Oracle, есть функция LEAST()
:
SELECT LEAST(MIN(col1), MIN(col2), MIN(col3))
AS MinOfAllColumns
FROM MyTable
Затем есть оператор CASE
, который можно использовать в большинстве РСУБД:
SELECT CASE WHEN MIN(col1) <= MIN(col2) AND MIN(col1) <= MIN(col3)
THEN MIN(col1)
WHEN MIN(col2) <= MIN(col3)
THEN MIN(col2)
ELSE MIN(col3)
END
AS MinOfAllColumns
FROM MyTable
Это также может работать, но трудно получить другие поля с подходом UNION
:
SELECT MIN(col) AS MinOfAllColumns
FROM
( SELECT MIN(col1) AS col
FROM MyTable
UNION
SELECT MIN(col2)
FROM MyTable
UNION
SELECT MIN(col3)
FROM MyTable
) AS tmp