我可以在子查询中使用"ORDER BY"子句吗?

sql*_*mmy 0 sql oracle sql-order-by oracle11g sql-in

SELECT * from table1 where column1 IN (SELECT column1 from table1 ORDER BY column1);
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 6

您不能order by在与in运算符一起使用的查询中使用子句.我猜测拒绝使用它的原因是因为它没有意义 - in如果左侧操作数存在于右侧查询的结果中,则条件应该返回true,而不管它在结果中的相对位置.所以允许你使用一个order by条款会让甲骨文的开发人员有两个没有吸引力的选择之一:

  1. 执行昂贵,无用的排序
  2. 默默地忽略该order by条款.

这些选项都不适合Oracle数据库的思维模式,所以我猜最简单的方法就是阻止这个选项.