テーブルにいくつかのレコードがあります。
最大年齢のレコードを選択したい
クエリの下に書くと、うまくいきます。
Select MAX(Age)
From Table
それはうまくいっています。でもこう書くと、
Select FirstName, LastName, MAX(Age)
From Table
Group By FirstName, LastName
機能していません (すべてのレコードを表示しています)。どうすればこれを修正できますか?
サブクエリを使用して最大値を取得しAge
、結果を外部クエリの経過時間と比較できます。
Select *
From TableName
WHERE Age = (SELECT MAX(Age) FROM TableName)
簡単な説明、GROUP BY
クエリでの使用は、フィルタリング演算子ではなく、非集計列のみをグループ化するため、希望どおりにはなりません。たとえば、姓と名が同じで年齢が異なる 2 つのレコードがあるとしますMAX()
。
max(Age) を使用すると単一のレコードが取得されるため、 FirstName,LastName には複数のレコードがあります。
これを一緒に使用しているため、あいまいさが生じています。
Select FirstName, LastName from From Table where Age = (SELECT MAX(Age) FROM Table)
このクエリを使用します。
別の方法は、次を使用することnot exists
です。
Select * from Table t1
where not exists (select 1 from Table where age > t1.age)