下面的代码:
SELECT F.NAME, D.DYNAMIC_MESSAGE_ID, E.STATUS, E.S_ORDER
  FROM SYS_SUBSCRIBE_MESSAGE D
  LEFT OUTER JOIN SYS_USER_CSS_TYPE_MESSAGE E on D.DYNAMIC_MESSAGE_ID =
                                                 E.TYPE_ID
                                             AND E.USER_CSS_ID =
                                                 '1280719764502',
 SYS_DYNAMIC_MESSAGE F
 WHERE F.ID = D.DYNAMIC_MESSAGE_ID
   and D.USER_ID = '0001'
union
select '文本消息',
       'textMessage',
       (select status
          from SYS_USER_CSS_TYPE_MESSAGE
         where type_id = 'textMessage'
           and user_css_id = '1280719764502') as status,
       (select s_order
          from SYS_USER_CSS_TYPE_MESSAGE
         where type_id = 'textMessage'
           and user_css_id = '1280719764502')
  from sys_passwordpolicy执行出来两条数据(正确)SELECT F.NAME, D.DYNAMIC_MESSAGE_ID, E.STATUS, E.S_ORDER
  FROM SYS_SUBSCRIBE_MESSAGE D
  LEFT OUTER JOIN SYS_USER_CSS_TYPE_MESSAGE E on D.DYNAMIC_MESSAGE_ID =
                                                 E.TYPE_ID
                                             AND E.USER_CSS_ID =
                                                 '1280392303114',
 SYS_DYNAMIC_MESSAGE F
 WHERE F.ID = D.DYNAMIC_MESSAGE_ID
   and D.USER_ID = '0001'
union
select '文本消息',
       'textMessage',
       (select status
          from SYS_USER_CSS_TYPE_MESSAGE
         where type_id = 'textMessage'
           and user_css_id = '1280392303114') as status,
       (select s_order
          from SYS_USER_CSS_TYPE_MESSAGE
         where type_id = 'textMessage'
           and user_css_id = '1280392303114')
  from sys_passwordpolicy执行完报错!数据库错误:ORA-01427: 单行子查询返回多个行请问这个问题该怎么解决?

解决方案 »

  1.   

    type_id和user_css_id不是主键吧,lz仔细检查一下数据
      

  2.   

    -- 这个错误很常见,就是你本应该返回一条记录行的情况下,而你的查询语句却返回了多行,
    -- 如 select col1, col2 into var1, var2 from table_1 where .....-- 这条语句将两个字段的值赋值给两个变量,那么此时这个 select 语句返回的记录行应该只能是一条!
      

  3.   

    -- 你看一下你的子查询:(select status
      from SYS_USER_CSS_TYPE_MESSAGE
      where type_id = 'textMessage'
      and user_css_id = '1280392303114') as status,
      (select s_order
      from SYS_USER_CSS_TYPE_MESSAGE
      where type_id = 'textMessage'
      and user_css_id = '1280392303114')
    -- 上面这个:返回的数据行有几条?
      

  4.   

    --这样看
    SELECT F.NAME, D.DYNAMIC_MESSAGE_ID, E.STATUS, E.S_ORDER
      FROM SYS_SUBSCRIBE_MESSAGE D
      LEFT OUTER JOIN SYS_USER_CSS_TYPE_MESSAGE E 
    on D.DYNAMIC_MESSAGE_ID =E.TYPE_ID 
    join SYS_DYNAMIC_MESSAGE F on F.ID = D.DYNAMIC_MESSAGE_ID
    WHERE  E.USER_CSS_ID ='1280392303114' and D.USER_ID = '0001'
    union
    select '文本消息','textMessage',status,s_order
      from SYS_USER_CSS_TYPE_MESSAGE
      where type_id = 'textMessage'
      and user_css_id = '1280392303114'