暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 将初始顺序保持在设置中

ASKTOM 2020-09-03
283

问题描述

嗨,汤姆,

也许这是微不足道的,但我找不到解决方案: 删除字符串 (“pqr”) 后,我需要保持初始顺序,以便:

select 'xyz' from dual
union all
select 'abc' from dual
union all
select 'pqr' from dual
minus 
select 'pqr' from dual;
复制


将输出:
----
xyz
abc
复制


而不是
-------
abc
xyz
复制

由于应用了减号自动排序。
有什么建议吗?这可以在SQL中完成吗?

专家解答

您需要 * defined * 顺序,因为如果没有order BY,则无法保证SQL结果中的任何顺序。

例如,即使没有减号,只是做:

select 'xyz' from dual
union all
select 'abc' from dual
复制


不 * 意味着您将获得 'xyz' 作为第一行。这完全是数据库引擎的心血来潮。

所以你需要添加一些东西来排序,例如

SQL> select c
  2  from (
  3  select 1 s, 'xyz' c from dual
  4  union all
  5  select 2, 'abc' from dual
  6  union all
  7  select 3, 'pqr' from dual
  8  )
  9  where c not in (
 10  select 'pqr' from dual
 11  )
 12  order by s;

C
---
xyz
abc
复制

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论