已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
七年前就关门了。
Improve this question
SELECT * from table1 where column1 IN (SELECT column1 from table1 ORDER BY column1);
已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
七年前就关门了。
Improve this question
SELECT * from table1 where column1 IN (SELECT column1 from table1 ORDER BY column1);
3条答案
按热度按时间zbdgwd5y1#
在使用
in
操作符的查询中不能使用order by
子句。我猜拒绝使用它的原因是因为它没有意义-如果左侧操作数出现在右侧查询的结果中,in
条件应该返回true。而不管它在结果中的相对位置如何。因此,允许您使用order by
子句将使Oracle开发人员面临两个不受欢迎的选择之一:1.执行昂贵、无用的排序或
1.悄悄忽略
order by
子句。这两个选项都不适合Oracle数据库的思维模式,所以我猜最简单的事情就是阻止这个选项。
7nbnzgx92#
简单而直接的回答否。为什么?
order by
的目的是为结果数据提供排序功能,而子查询/内部查询数据不是最终输出,而是将使用外部查询进一步操作的部分数据,因此在子查询中使用order by
毫无意义,完全不合逻辑。您应该在主查询中使用如下顺序jvidinwx3#
如果问题是我可以使用ORDER BY吗,答案非常简单。Oracle语法检查要么接受ORDER BY,要么拒绝它。
在你的例子中
您会收到错误
语法检查器不接受子查询中的ORDER BY,并抱怨缺少右括号。这是语法检查,您可能会在事实上看到,即使表不存在,您也会得到同样的错误。(应该提到的是,在某些情况下,允许的语法是标准的扩展)。
一个问题我应该使用ORDER BY是完全不同的,正如在其他地方讨论的那样。
添加示例
下面是允许在子查询中使用ORDER BY的示例
相反,这会导致语法错误