UNION语句之上的SELECT语句

时间:2016-10-24 10:42:34

标签: sql oracle oracle-sqldeveloper

select * 
from
    {
        SELECT 
            ID, CLASS, CHANGE_NUMBER AS OBJECT_NUMBER 
        FROM table_A

        UNION

        SELECT 
            ID, CLASS, CUST_NO AS OBJECT_NUMBER 
        FROM table_B
        ORDER BY ID
    } x where x.id ='5434';

帮我运行此查询。

我收到错误“无效的表名”

2 个答案:

答案 0 :(得分:3)

我建议像这样编写查询:

select x.*
from (SELECT ID, CLASS, CHANGE_NUMBER AS OBJECT_NUMBER FROM table_A
      UNION ALL
      SELECT ID, CLASS, CUST_NO AS OBJECT_NUMBER FROM table_B
     ) x
where x.id = '5434';

注意:

  • 大括号可能是你的语法问题。
  • 使用UNION ALL代替UNION,除非您真的想要承担删除重复项的开销。
  • 不需要ORDER BY。毕竟,您只选择一个id
  • 如果你有ORDER BY,最好将它放在外部查询中而不是子查询中。

答案 1 :(得分:1)

使用'('括号代替' {'。

EditText