首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以在没有子select的情况下执行这个查询?

问有没有一种方法可以在没有子select的情况下执行这个查询?
EN

Stack Overflow用户
提问于 2013-04-17 12:07:59
回答 3查看 60关注 0票数 0

我不是很肯定,但我相信子选择不是最优的(速度?)。

有没有办法从我的查询中删除这个子select(我认为这个查询是不言自明的)。

代码语言:javascript
复制
select *
from tickers
where id = (select max(id) from tickers where annual_score is not null);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-17 12:12:15

这个特定的子选择不应该是低效的。它应该在主查询开始之前运行一次。

有一类子查询是低效的(那些在主查询和子查询之间联接列的子查询),因为它们最终会为主查询的每一行运行子查询。

但这不应该是其中之一,除非MySQL受到了严重的脑损伤,我对此表示怀疑。

但是,如果您仍然希望删除子查询,则可以按id (降序)对行进行排序,并且只提取第一个,如下所示:

代码语言:javascript
复制
select * from tickers
where annual_score is not null
order by id desc
limit 0, 1
票数 5
EN

Stack Overflow用户

发布于 2013-04-17 12:13:15

会不会像这样:

SELECT * FROM ticker WHERE annual_score IS NOT NULL ORDER BY id desc LIMIT 1

工作?

票数 6
EN

Stack Overflow用户

发布于 2013-04-17 12:14:32

不太熟悉MySQL,但是如果您想删除子查询,可以尝试如下所示:

代码语言:javascript
复制
select * 
from tickers
where annual_score is not null
order by id desc
limit 1

我不知道这是或多或少的表现,因为MySQL不是我的背景。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16051310

复制
相关文章

相似问题

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