SQLのテーブルには次のスキーマがあります。
Owner (ownerid, name, phone, age)
MAXなどの集計関数を使用せずに、データベース内で最も古い所有者を見つけるためのステートメントを作成するように求められます。また、DBMSに固有のものを使用することも許可されていません。
ご協力いただきありがとうございます。
EXISTS
SQL準拠のすべてのRDBMSで標準となっている演算子を使用できます。
SELECT age
FROM Owner o1
WHERE NOT EXISTS (SELECT 1 FROM Owner o2 WHERE o2.age > o1.age)
このクエリの背後にある考え方は自明です。最も古い所有者は、 。より古い所有者o1
が他にいないような所有者o2
です。o2
o1
また、SQLに準拠するすべてのRDMSで標準となっているNOTINおよびJOIN演算子を使用することもできます。
select age from owner where age not in (select o2.age from owner as o1 JOIN owner as o2 ON o1.age > o2.age);
もう1つのオプションは、ALL演算子を使用することです。
select o1.*
from "owner" o1
where age > all (select age
from "owner" o2
where o2.ownerid <> o1.ownerid);
それは本質的に、私たちが見ているものを除いて、年齢がすべての年齢値よりも大きい所有者を見つけます。