Mysql 基于条件的SQL 3列查询
我对SQL还是相当陌生,有一个类似于以下的表Mysql 基于条件的SQL 3列查询,mysql,Mysql,我对SQL还是相当陌生,有一个类似于以下的表 Street | Family | Car -------------------------------- Mayfair | Jones | BMW Mayfair | Jones | Ford Mayfair | Jones | Mazda Mayfair | Smith | BMW Mayfair | Fox | BMW Park Lane | Tay
Street | Family | Car
--------------------------------
Mayfair | Jones | BMW
Mayfair | Jones | Ford
Mayfair | Jones | Mazda
Mayfair | Smith | BMW
Mayfair | Fox | BMW
Park Lane | Taylor | Ford
Park Lane | Taylor | Mazda
Park Lane | Cole | BMW
我想知道是否有一个单一的查询,可以做,以检查特定的街道,看看是否有一辆车,所有家庭的
例如,在上表中,查询只会返回Mayfair的BMW,因为Mayfair上的所有家庭都拥有一辆BMW
我目前只在MySql中使用XAMPP,所以没有任何花哨的服务器或任何设置等等
谢谢
或:
SELECT Family
和SELECT Car
可以替换为SELECT*
。我把它们放在那里只是为了弄清楚查询是如何工作的。
SELECT street, car
FROM tableX AS t1
GROUP BY street, car
HAVING COUNT(DISTINCT family)
= ( SELECT COUNT(DISTINCT t2.family)
FROM tableX AS t2
WHERE t2.street = t1.street
)
SELECT DISTINCT street, car --- show streets and cars
FROM tableX AS a
WHERE NOT EXISTS --- where there is no
( SELECT Family --- family
FROM tableX AS f
WHERE f.Street = a.Street --- in that street
AND NOT EXISTS --- that hasn't
( SELECT Car
FROM tableX AS c
WHERE c.Family = f.Family
AND c.Car = a.Car --- that car
)
)