我需要仅使用一个表PK(ID,CAR)从内部联接中获取一些结果。
ID CAR VAL
1 34 A
1 4430 B
1 50 C
2 34 D
2 55 M
这就是我所拥有的:
SELECT A.*, B.CAR, B.VAL
FROM PRUEBA2 A INNER JOIN PRUEBA2 B ON
A.ID = B.ID
WHERE
A.VAL IN ('A','B') AND
A.CAR = 34 AND
B.CAR = 4430
但我得到了这个:
ID CAR VAL CAR VAL
1 34 A 4430 B
我需要控制两个不同的CAR值。如果A.CAR = 34和A.VAL IN('A','B'),那么如果这是真的,我需要检查CAR 4430的VAL是什么
我试图将此作为最终结果
A.ID A.CAR A.VAL B.CAR B.VAL
1 34 A 4430 B
2 34 D NP NP
NP =不存在
我怎样才能达到这个目标?我的意思是,仅得到这两个值的数据。
答案 0 :(得分:2)
我想你想要一个left join
:
SELECT A.*, B.CAR, B.VAL
FROM PRUEBA2 A LEFT JOIN
PRUEBA2 B
ON A.ID = B.ID AND B.CAR = 4430
WHERE A.VAL IN ('A','B') AND
A.CAR = 34;
如果您不喜欢COALESCE()
值,可以使用NULL
。
答案 1 :(得分:2)
目前尚不清楚这是否是你想要的所有情况,但是这会为你提供你想要输出的输出:
SELECT A.*, B.CAR, B.VAL
FROM PRUEBA2 A
LEFT JOIN PRUEBA2 B
ON A.ID = B.ID AND
B.CAR = 4430
WHERE A.CAR = 34
请注意,您不能WHERE A.VAL IN ('A','B')
或那会消除D
行。