繁体   English   中英

使用MySQL的GROUP BY / HAVING的替代方法

[英]Alternatives to GROUP BY/HAVING using MySQL

我面临以下问题:

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

使用以下数据库架构:

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

这是我想使用的查询

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

我一直在尝试按照规范进行操作,但是没有成功。 有人可以指导我进行此操作的逻辑吗?

感谢您的阅读。

您是否尝试过使用Subquery

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

SELECT 
p.pname
FROM person AS p
WHERE
(SELECT count(*) FROM vehicle where pname = p.pname) > 1
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小提琴

我们也可能添加DISTINCT来涵盖多于2辆汽车的情况

更新:

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

代替v1.id!= v2.id,您可以添加v1的主键检查PK!= v2的PK

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM