显示列,即使它是空的

时间:2014-04-06 10:27:19

标签: sql database postgresql

我在PostgreSQL中有这个SQL语句:

SELECT "Name", "ID" FROM "NAME TABLE" WHERE "ID" IN 
(SELECT "No" FROM "LIST TABLE");

在第二个选择语句4“ID”中,“NAME TABLE”中有3个“名称”。目前的结果就像这个故事:

+---------------+
|Name    |  ID   |
|----------------|
|Jhon    |  23   |
|Jaas    |  25   |
|Alya    |  26   |
+----------------+

我想在下面显示第四个ID,而不显示名称列中的值:

+---------------+
|Name    |  ID   |
|----------------|
|Jhon    |  23   |
|Jaas    |  25   |
|Alya    |  26   |
|        |  28   |
+----------------+

1 个答案:

答案 0 :(得分:1)

假设我猜对了你想要的东西......这叫做外连接

首先,您需要了解具有in的子查询实际上等同于以下内部联接

SELECT "Name", "ID"
FROM "NAME TABLE" n
INNER JOIN "LIST TABLE" l
ON (n."ID" = l."No");

鉴于此,您可以转换连接类型以保留不匹配的行:

SELECT "Name", "ID"
FROM "NAME TABLE" n
RIGHT OUTER JOIN "LIST TABLE" l
ON (n."ID" = l."No");

这里,"右外连接"表示"对于每个右手行,如果没有与连接条件匹配的左手行,则保持右手行并保留空值代替左手行"。

人们使用左外连接比右外连接更多。它们实际上是相同的东西 - " x左外连接y"与" y右外连接x"相同除了列的显示是" x,y"而不是" y,x"。产生的行是相同的。

要了解详情,请参阅the PostgreSQL documentation tutorial on joins