【发布时间】:2017-04-03 07:24:53
【问题描述】:
我有两个 postgreSQL 表,即:employees 和 employee_cars。 我需要输出拥有“BMW”、“MERC”和“VW”但不拥有“AUDI”的所有员工。
我尝试过以下查询:
SELECT DISTINCT a.employee_name, b.car_brand
FROM employees a
LEFT JOIN employee_cars b
ON a.employee_id = b.employee_id
WHERE b.car_brand IN ('BMW','MERC','VW')
AND b.car_brand NOT LIKE 'AUDI';
输出如下:
employee_name,car_brand
"Mary","BMW"
"Mary","MERC"
"Mary","VW"
"Paul","BMW"
"Paul","MERC"
"Paul","VW"
问题是员工拥有的每辆车都是employee_cars 表中的一行。例如,例如;我有“玛丽”,它拥有:“宝马”、“MERC”、“大众”、“奥迪”。 我有“保罗”,它只拥有:“宝马”、“MERC”、“大众”。 我的查询将显示 Mary 和 Paul,因为他们都拥有“BMW”、“MERC”、“VW”。
我只想在结果中看到“Paul”,因为他缺少“AUDI”。
请注意,我不是数据库专家,我将不胜感激任何帮助和帮助。 提前致谢。
【问题讨论】:
-
哦,我明白了。 “BMW”、“MERC”AND“VW”实际上是指“BMW”、“MERC”或“VW”,对吗?
-
@Laurenz Albe,没有一点复杂:
'BMW', 'MERC' AND 'VW'AND NOT'AUDI'
标签: sql postgresql postgresql-9.2