我是 MySQL 的新手。我在 Stack Overflow 找到了几个想法和代码来获得指定的最大值。所有这些都是完全不同的,我无法决定哪个是最好的方法。我不能使用GREATEST
or LEAST
,因为我知道它不适用于有 PK 和/或有 FK 多个表。(在我的期末考试中,我也必须使用 FK 和 PK。)
这是我自己的代码:
SELECT Column
FROM table
WHERE Column =
(
SELECT MAX(Column)
FROM table
WHERE Value = true
)
我找到了一个惰性版本来获得最大值:
SELECT ColumnName
FROM table
WHERE Value = true
ORDER BY ColumnName DESC
LIMIT 1
据我所知,这首先下订单,这比检查所有数据一次并获得最小值要多。
我还发现了这个使用 JOIN 的类似句子的方法:
select
f.*
from
foo f
inner join
(
select min(id) as id from foo
) m on m.id = f.id;
但是现在我没有多个表,而且我认为我不必因为来自一个表的一个查询而创建一个(临时?)子表。
这是我的任务:查询最后发现哪种气体状态的物质。
我只有 1 个带有列的表数据:http: //pastebin.com/raw/82zZ0rh2
如果元素是物质的气体状态,则气体列的行值为 1,否则为 0。
我的示例代码是这样处理的:
SELECT DiscoverYear, ElementName
FROM discoveries
WHERE DiscoverYear =
(
SELECT MAX(DiscoverYear)
FROM discoveries
WHERE Gas = 1
)
请想象大量的数据。获得最大值的最佳方法是什么?