1

我面临以下问题:

提出一个查询,列出拥有多于一辆车的人(pname)(您不能使用 GROUP BY 和/或 HAVING)

使用以下数据库架构:

车辆(车牌*、年份、品牌、型号、成本、名称)

这是我想使用的查询

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

我一直在尝试按照规范提出一种方法来做到这一点,但我没有取得任何成功。有人可以指导我这样做的逻辑吗?

感谢您的阅读。

4

2 回答 2

2

您是否尝试过使用子查询

使用您的表格作为参考,它应该是这样的

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 您可以添加主键检查 PK of v1 !=PK of v2

于 2015-11-20T08:03:11.210 回答