如果未找到记录,则返回NULL值

时间:2013-07-15 07:51:50

标签: sql plsql oracle10g

请帮助我实现以下方案。

select * from pmdl;

PROPERTY_NAME      VALUE
------------- ----------
profile             1010 

select (select value from pmdl where property_name='profile') as value from dual;

- >>我得到了1010的价值

从pmdl中选择*; 没有选择行

select (select value from pmdl where property_name='profile') as value from dual;

- >>如果记录不存在,我将获得NULL值。

我必须在多个记录中实现同样的目标。

PROPERTY_NAME      VALUE
------------- ----------
profile             1010 
profile             1020 

select (select value from pmdl where property_name='profile') as value from dual;

由于返回多条记录而导致误差低于此值。

  

ORA-01427:单行子查询返回多行   01427. 00000 - “单行子查询返回多行”   *原因:
  *操作:

如何检索多条记录。

2 个答案:

答案 0 :(得分:0)

尝试这种方式:

select value from pmdl where property_name='profile'
union
select max(value) from pmdl where property_name='profile'

如果pmdl没有记录,则第二个查询将返回null。

如果第一个查询返回的某些数据超过union,则会从第二个查询中删除重复项。

答案 1 :(得分:0)

这是一个示例,其中UNION中的第一个SELECT是返回一些东西。如果没有,则第二个SELECT将返回NULL。外部SELECT仅强制其中一行返回。你每次都要坚持不懈。

SELECT TOP 1 WITH TIES tbl1.*
FROM (SELECT TOP 1 tnok1.TETNokCommID, tnok1.TETID, tnok1.LastSentDate
      FROM tblTETNOKcomms AS tnok1
      WHERE tnok1.TETID = 39
      UNION
      SELECT NULL, NULL, NULL) AS tbl1
ORDER BY 3 DESC