Mam tabeli:trzy kolumny - dostać MAX z SQL
Ocena:
id | one | two | three
1 | 12 | 3 | 7
2 | 11 | 30 | 3
3 | 8 | 14 | 4
Jak mogę dostać z SQL MAX wartości z tych pól (jeden, dwa, trzy)? W tym przykładzie jest to .
Mam tabeli:trzy kolumny - dostać MAX z SQL
Ocena:
id | one | two | three
1 | 12 | 3 | 7
2 | 11 | 30 | 3
3 | 8 | 14 | 4
Jak mogę dostać z SQL MAX wartości z tych pól (jeden, dwa, trzy)? W tym przykładzie jest to .
W MySQL można użyć GREATEST Funkcja:
SELECT MAX(GREATEST(one, two, three))
FROM T;
Można UNPIVOT dane podobne do tego:
select max(value)
from
(
select id, 'one' col, one value
from yourtable
union all
select id, 'two' col, two value
from yourtable
union all
select id, 'three' col, three value
from yourtable
) src
Zobacz SQL Fiddle with Demo.
Lub można użyć coś takiego:
SELECT max(data)
FROM
(
SELECT
CASE s.col
WHEN 'one' THEN one
WHEN 'two' THEN two
WHEN 'three' THEN three
END AS DATA
FROM yourtable t
CROSS JOIN
(
SELECT 'one' AS col
UNION ALL SELECT 'two'
UNION ALL SELECT 'three'
) s
) s
Zobacz SQL Fiddle with Demo
Spróbuj zapytanie
SELECT tempTable.id, tempTable.max(val)
FROM (SELECT id, max(one) AS val
FROM tbl
UNION
SELECT id, max(two) AS val
FROM tbl
UNION
SELECT id, max(three) AS val
FROM tbl
) AS tempTable;
select max(if(one > two, if(one > three, one, three), if(two > three, two, three))
from Rating
SELECT MAX(field) FROM (
SELECT one AS field FROM table
UNION
SELECT two AS field FROM table
UNION
SELECT three AS field FROM table
) AS t
+1 Najprostsze standardowe rozwiązanie SQL. – l0b0
select GREATEST(max(one), max(two), max(three)) as maximum
from table;
+1 Najbardziej skuteczna odpowiedź. –
Można użyć case
oświadczenie
SELECT
CASE
WHEN one >= two AND one >= three THEN one
WHEN two >= one AND two >= three THEN two
WHEN three >= one AND three >= two THEN three
ELSE one
END AS MaxVal
New mi jedno ... super – DRapp
+1, największego odpowiedź :) – RIKI
The " Największa "funkcja istnieje również w Oracle, więc to rozwiązanie działa również dla Oracle. – rgettman