0

请帮助我实现以下场景。

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 - “单行子查询返回多于一行” *原因:
*操作:

如何检索多条记录。

4

2 回答 2

1

试试这个方法:

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

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

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

于 2013-07-15T07:53:51.803 回答
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
于 2017-05-15T23:55:10.780 回答