Oracle JOIN ON colA = colB:如何在colA中包含空行

时间:2015-11-25 12:08:31

标签: sql oracle

我有两张桌子。

TABLE_A

| SURNAME | COL_X |

表-B

| ID | COL_Y |

COL_X可以映射到表B中的ID列,我需要COL_Y中的值。

以下查询正常工作,除非TABLE_A中的COL_X具有NULL值。我想包括那些行。我该怎么做?

SELECT a.SURNAME, b.COL_Y
FROM TABLE_A a
INNER JOIN TABLE_B b
ON a.COL_X = b.ID

我尝试了以下查询但它返回了重复的行,因此无法使用。

SELECT a.SURNAME, b.COL_Y
FROM TABLE_A a
INNER JOIN TABLE_B b
ON a.COL_X = b.ID or a.COL_X IS NULL

4 个答案:

答案 0 :(得分:1)

只需使用LEFT JOIN代替INNER JOIN

SELECT a.SURNAME, b.COL_Y
FROM TABLE_A a
LEFT JOIN TABLE_B b
  ON a.COL_X = b.ID

答案 1 :(得分:1)

您已尝试使用内部联接,该联接显示两个表中的所有行。你可以使用左连接来做你期望的事情:

SELECT a.SURNAME, b.COL_Y
FROM TABLE_A a
LEFT JOIN TABLE_B b
  ON a.COL_X = b.ID

答案 2 :(得分:1)

您应该尝试外连接,例如 -

localhost:~ sorins$ which python
/usr/local/bin/python

python -m pip install --user --upgrade matplotlib

答案 3 :(得分:1)

这些行在tableB中没有共同作用。查询很简单:

SELECT a.SURNAME, b.COL_Y
FROM TABLE_A a
LEFT JOIN TABLE_B b
ON a.COL_X = b.ID

阅读本文,了解有关加入的更多信息:SQL JOIN and different types of JOINs