1

私はMySQLの初心者です。指定された最大値を取得するために、Stack Overflow でいくつかのアイデアとコードを見つけました。どれも全然違っていて、どれが一番いいのか決められません。GREATESTorは使用できません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
)

大量のデータを想像してください。最大値を取得するための最良の方法は何ですか?

4

1 に答える 1