2

SQLのテーブルには次のスキーマがあります。

Owner (ownerid, name, phone, age)

MAXなどの集計関数を使用せずに、データベース内で最も古い所有者を見つけるためのステートメントを作成するように求められます。また、DBMSに固有のものを使用することも許可されていません。

ご協力いただきありがとうございます。

4

3 に答える 3

3

EXISTSSQL準拠のすべてのRDBMSで標準となっている演算子を使用できます。

SELECT age
FROM Owner o1
WHERE NOT EXISTS (SELECT 1 FROM Owner o2 WHERE o2.age > o1.age)

このクエリの背後にある考え方は自明です。最も古い所有者は、 。より古い所有者o1が他にいないような所有者o2です。o2o1

于 2013-03-24T20:27:33.520 に答える
0

また、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);
于 2019-05-11T18:23:54.340 に答える
0

もう1つのオプションは、ALL演算子を使用することです。

select o1.*
from "owner" o1
where age > all (select age 
                 from "owner" o2
                 where o2.ownerid <> o1.ownerid);

それは本質的に、私たちが見ているものを除いて、年齢がすべての年齢値よりも大きい所有者を見つけます。

于 2019-05-11T18:30:29.510 に答える