3

テーブルにいくつかのレコードがあります。

最大年齢のレコードを選択したい

クエリの下に書くと、うまくいきます。

Select MAX(Age)
From Table

それはうまくいっています。でもこう書くと、

Select FirstName, LastName, MAX(Age)
From Table
Group By FirstName, LastName

機能していません (すべてのレコードを表示しています)。どうすればこれを修正できますか?

4

4 に答える 4

4

サブクエリを使用して最大値を取得しAge、結果を外部クエリの経過時間と比較できます。

Select  *
From    TableName
WHERE   Age = (SELECT MAX(Age) FROM TableName)

簡単な説明、GROUP BYクエリでの使用は、フィルタリング演算子ではなく、非集計列のみをグループ化するため、希望どおりにはなりません。たとえば、姓と名が同じで年齢が異なる 2 つのレコードがあるとしますMAX()

于 2013-04-08T05:59:16.327 に答える
3

max(Age) を使用すると単一のレコードが取得されるため、 FirstName,LastName には複数のレコードがあります。

これを一緒に使用しているため、あいまいさが生じています。

Select FirstName, LastName from From Table where Age = (SELECT MAX(Age) FROM Table)

このクエリを使用します。

于 2013-04-08T05:59:59.253 に答える
1

別の方法は、次を使用することnot existsです。

Select * from Table t1
where not exists (select 1 from Table where age > t1.age)
于 2013-04-08T06:02:36.937 に答える