我使用下面的select语句获取了我需要的记录,这是CARS_PRIMARY表中的CAR_COLOR,它不存在于CAR_SECONDARY表中(也有CAR_COLOR列),但是我现在如何包含其他匹配列结果,因此它返回与
下面的select语句的结果相关联的附加列SELECT CAR_COLOR
FROM CARS_PRIMARY
MINUS
SELECT CAR_COLOR
FROM CARS_SECONDARY
目前的结果 是
PINK
BLUE
GREEN
我需要
PINK SUV 4DOOR
BLUE CAR 2DOOR
GREEN TRUCK 2DOOR
答案 0 :(得分:2)
您可以使用NOT IN
代替MINUS
:
SELECT *
FROM cars_primary
WHERE car_color NOT IN
(SELECT car_color
FROM cars_secondary)
或者
SELECT *
FROM cars_primary
WHERE NOT EXISTS
(SELECT NULL
FROM cars_secondary
WHERE cars_secondary.car_color = cars_primary.car_color)
答案 1 :(得分:1)
MINUS
/ EXCEPT
SELECT *
FROM CARS_PRIMARY
WHERE CAR_COLOR IN (
SELECT CAR_COLOR
FROM CARS_PRIMARY
EXCEPT
SELECT CAR_COLOR
FROM CARS_SECONDARY
);
我们首先在CARS_PRIMARY
中获取一组所有颜色,但不在CARS_SECONDARY
中,然后选择CARS_PRIMARY
中具有该颜色的所有列。
我使用EXCEPT
,但如果MINUS
有效,则可以使用它。
LEFT JOIN
SELECT CP.*
FROM CARS_PRIMARY CP
LEFT JOIN CARS_SECONDARY CS
ON (CP.CAR_COLOR = CS.CAR_COLOR)
WHERE CS.CAR_COLOR IS NULL;
我们对颜色上的CARS_PRIMARY
到CARS_SECONDARY
进行外部联接,然后丢弃所有来自CARS_SECONDARY
的值的行。
NOT IN
SELECT *
FROM CARS_PRIMARY
WHERE CAR_COLOR NOT IN (
SELECT CAR_COLOR
FROM CARS_SECONDARY
);
我们从CARS_PRIMARY
中选择颜色不在CARS_SECONDARY
的颜色集中的所有列。
NOT EXISTS
SELECT *
FROM CARS_PRIMARY CP
WHERE NOT EXISTS (
SELECT *
FROM CARS_SECONDARY CS
WHERE CS.CAR_COLOR = CP.CAR_COLOR
);
我们从CARS_PRIMARY
中选择CARS_SECONDARY
中不存在颜色的所有列。