mysql - 使用 MySQL 的 GROUP BY/HAVING 的替代方案

标签 mysql sql sqlfiddle

我遇到了以下问题:

Come up with a query that lists the people(pname) who own more than one car (you cannot use GROUP BY and/or HAVING)

Use the following database schema:

vehicle (licplate*, year, make, model, cost, pname)

这是我想使用的查询

select pname from vehicle
group by pname
having count(*) > 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 fiddle

我们还可以添加 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

关于mysql - 使用 MySQL 的 GROUP BY/HAVING 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33820823/

相关文章:

c# - 将 Entity Framework 6 与 MySQL 结合使用

php - 将 PHP 日期与 MySQL 日期类型进行比较

sql - 使用 Postgresql 计算用户流失率

c# - ORA-00911: C# 中的无效字符,但不是 Oracle SQL Developer

mysql - Sqlfiddle 问题

java - jdbc 无法与 java 连接

MYSQL 5.7.17 全文搜索

c# - 从庞大的数据库中选择 id

oracle - SQL Fiddle 输出错误

mysql - 带有 JOINS 和计数器的复杂 MySQL cmd 不起作用