首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从带有order的子查询中选择第一个元素

从带有order的子查询中选择第一个元素
EN

Stack Overflow用户
提问于 2015-04-27 19:42:19
回答 2查看 2.7K关注 0票数 0

我试图使用子查询来选择表的第一个元素,并对其进行其他过滤。

我的工作是基于对这个答案的一个类似问题的评论。我的查询略有不同,因为我正在对从子查询生成的表进行一些筛选。

代码语言:javascript
运行
复制
select *
from (
  select firstname, lastname
  from employees
  order by (lastname)
)
where
  rownum = 1
  AND lastname like :wildcard;

我的问题是:像这样的额外过滤是否可能破坏子查询的顺序,使这种技术在某些情况下无法工作?

这个问题有一个明显的解决方案,您可以简单地将lastname like :wildcard过滤器移到子查询中,但我所使用的应用程序限制了我这样做(如果这使问题更加模糊,我很抱歉)。

编辑:

为了澄清我的应用程序限制,lastname like :wildcard过滤器不能出现在任何from子句子查询中。

为了尽可能地解释这个问题,应用程序在许多不同的地方使用不同的查询,并将根据上下文编辑查询。有时,应用程序用来自父查询的列引用替换:wildcard。根据实验,在from子句子查询中不能这样做(尽管我无法找到这方面的文档,我只能猜测原因)。

EN

Stack Overflow用户

发布于 2015-04-27 20:43:53

我不明白为什么您无法更改内部子查询,但如果真的不能更改,则可能需要执行以下多个子查询:

代码语言:javascript
运行
复制
select *
from (
  select *
  from (
    select firstname, lastname
    from employees
    order by (lastname)
  )
  where lastname like :wildcard
)
where rownum = 1;

按照您编写的方式,只有在按字母顺序查询姓氏时,才能得到正确的结果。如果查询类似"Smith“的内容,将返回0行。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29904541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档