带3个表的简单sql查询

u5rb5r59  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(370)

考虑以下带有3个表的数据库:persons、cars、persons\u cars(join table)。其字段如下所述:

persons: id, phone, address
cars: id, model, manufacturer
persons_cars: id, id_car, id_person

对于当前情况,请考虑所有字段 varchar 期待 id (当然是主键和外键)。
一个返回 id 拥有同一制造商的多辆汽车(至少两辆)的人(因为制造商可以是相同的(例如“大众”、“沃尔沃”、“本田”等)。是否可以在一个查询中完成此操作?

frebpwbc

frebpwbc1#

下面是一个简单的方法。我们可以把 persons_cars 表,然后将总制造商计数与不同的制造商计数进行比较。如果前者大于后者,那么我们可以假设存在一个重复的制造商,即该人拥有同一制造商的两辆或两辆以上的汽车。

SELECT pc.id_person
FROM persons_cars pc
INNER JOIN cars c
    ON pc.id_car = c.id
GROUP BY pc.id_person
HAVING COUNT(*) > COUNT(DISTINCT c.manufacturer);

您同时使用mysql和postgres进行了标记,不过这个答案应该可以在任何一个数据库上运行而不会出现任何问题。

相关问题