1

次の問題に直面しています。

複数の車を所有している人々 (pname) をリストするクエリを作成します (GROUP BY や HAVING は使用できません)。

次のデータベース スキーマを使用します。

車両 (licplate*, year, make, model, cost, pname)

これが私が使用したいクエリです

select pname from vehicle
group by pname
having count(*) > 1;

仕様に従ってこれを行う方法を考え出そうとしていますが、成功していません。誰かがこれを行うロジックを案内してもらえますか?

読んでくれてありがとう。

4

2 に答える 2

2

Subqueryを使用してみましたか?

あなたの表を参考にすると、次のようになります

SELECT 
p.pname
FROM person AS p
WHERE
(SELECT count(*) FROM vehicle where pname = p.pname) > 1
于 2015-11-20T07:14:27.100 に答える
2
select * from 
    (select *, 
        if (@name= pname, 1,0) as flag,
        @name:= pname as pn
     from vehicle
     order by pname) sub
where sub.flag=1;

SQLフィドル

車が 2 台以上ある場合は、DISTINCT を追加してケースをカバーすることもあります。

更新しました:

Select *
from vehicle v1
     join vehicle v2 on v1.pname=v2.pname 
                        and (v1.id!=v2.id)

v1.id!=v2.id の代わりに、Primary Key チェック PK of v1 !=PK of v2 を追加できます

于 2015-11-20T08:03:11.210 に答える