【问题标题】:Union throwing error联合投掷错误
【发布时间】:2018-11-28 14:48:26
【问题描述】:

包含的查询抛出错误,帮助我理解它。

select name, grade, marks
  from students, grades
  where min_mark<=marks and
        marks <= max_mark and
        marks >= 70
  order by grade desc,name
union 
select to_char('NULL') as name, grade, marks
  from students, grades
  where min_mark<=marks and
        marks <= max_mark and
        marks <=69
  order by grade desc,marks asc;

错误:

union 
* 
ERROR at line 3: 
ORA-00933: SQL command not properly ended 

【问题讨论】:

    标签: oracle join union


    【解决方案1】:

    您的整个查询只能有一个ORDER BY 子句,它位于最后。把中间的那个拿出来。

    select name, grade, marks
      from students, grades
      where min_mark<=marks and
            marks <= max_mark and
            marks >= 70
    union
    select to_char('NULL') as name, grade, marks
      from students, grades
      where min_mark<=marks and
            marks <= max_mark and
            marks <=69
      order by grade desc,marks asc;
    

    此外,由于您的集合似乎没有重叠,union all 的性能会比union 稍好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多