私はMySQLの初心者です。指定された最大値を取得するために、Stack Overflow でいくつかのアイデアとコードを見つけました。どれも全然違っていて、どれが一番いいのか決められません。GREATEST
orは使用できませんLEAST
。has PK および/または has 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 つのテーブルからの 1 つのクエリのために (一時的な?) サブテーブルを作成する必要はないと思います。
これが私の仕事です:物質のどの気体状態が最後に発見されたかを問い合わせます.
列を持つ私の唯一の1つのテーブルのデータ: http://pastebin.com/raw/82zZ0rh2
元素が物質の気体状態である場合、気体列の行の値は 1 であり、そうでない場合は 0 です。
私のコード例は、次のように処理します。
SELECT DiscoverYear, ElementName
FROM discoveries
WHERE DiscoverYear =
(
SELECT MAX(DiscoverYear)
FROM discoveries
WHERE Gas = 1
)
大量のデータを想像してください。最大値を取得するための最良の方法は何ですか?