得到MAX我有表:三列 - 与SQL
评级:
id | one | two | three
1 | 12 | 3 | 7
2 | 11 | 30 | 3
3 | 8 | 14 | 4
我怎样才能与SQL MAX从这些领域(一,二,三)值?对于这个例子,这是。
得到MAX我有表:三列 - 与SQL
评级:
id | one | two | three
1 | 12 | 3 | 7
2 | 11 | 30 | 3
3 | 8 | 14 | 4
我怎样才能与SQL MAX从这些领域(一,二,三)值?对于这个例子,这是。
可以UNPIVOT类似这样的数据:
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
或者你可以用这样的:
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
尝试此查询
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最简单的标准SQL解决方案。 – l0b0 2013-03-01 14:53:24
select GREATEST(max(one), max(two), max(three)) as maximum
from table;
+1最有效的答案。 – 2013-09-02 13:37:14
您可以使用case
声明
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
新的给我...酷 – DRapp 2013-03-01 11:59:27
+1,最伟大的答案:) – RIKI 2013-03-01 12:00:19
的“最大“的功能也存在于Oracle中,所以这个解决方案也适用于Oracle。 – rgettman 2013-03-01 18:41:36