查询不应返回任何行,而应返回列中具有空值的行

时间:2014-08-22 12:43:35

标签: sql

我有一个问题:

SELECT 
   PERSON_NAME 
FROM 
   PERSON 
WHERE 
   PERSON_ID = (SELECT ID FROM OTHER_TABLE WHERE PERSON_ID = 123)

现在,当person_id中存在有效的OTHER_TABLE时,会返回PERSON_NAME的值。

但是当person_id无效或不存在时,它不返回任何行。但我希望它为人名返回null。

有人可以告诉我该怎么做吗?

谢谢, 拉詹

2 个答案:

答案 0 :(得分:2)

您想要返回一行。在这种情况下,请使用聚合函数:

SELECT MAX(PERSON_NAME)
FROM PERSON
WHERE PERSON_ID = (SELECT ID FROM OTHER_TABLE WHERE PERSON_ID = 123);

答案 1 :(得分:1)

我认为您正在寻找的是外部联接。为此,您必须在查询中进行一些更改。你可以这样做:

SELECT PERSON_NAME FROM PERSON P,OTHER_TABLE O 
WHERE P.PERSON_ID(+) = O.ID AND P.PERSON_ID = 123  

我希望这会有所帮助。