gpt4 book ai didi

mysql - 如何从同一查询中的另一列中选择数据?

转载 作者:行者123 更新时间:2023-11-29 00:30:24 25 4
gpt4 key购买 nike

很抱歉这个问题措辞不当..但我不知道还能怎么解释...

MySQL... 我有一个查询,其中包含几个极其复杂的子查询。我从一个表中选择,我需要根据各种标准找出每条记录所在的“位置”..所以我有这个

 Select record.id, record.title 
(select count(*) from (complex-query-that-returns-newer-records)) as agePlace,
(select count(*) from (complex-query-that-returns-records-with-better-ROI)) as ROIPlace...
From record...

现在的问题是查询速度很慢——正如我预期的那样,给出了所需的处理量。但我意识到有些情况下 2 个子查询的结果会相同,并且我不需要运行子查询两次..(或者在我的代码中两次)。因此,我想将其中一个子查询包装在 if 语句中,如果满足条件,则使用已经计算出该数据的另一列中的值,否则,正常运行子查询。

我试过只输入另一个子查询的别名,但它显示未知列 totalSales,因为该字段在查询中,而不是在其中一个表中。

有什么办法解决这个问题吗?

更新: 我已将其重新发布为一个查询重构问题 - 感谢您的建议.. How to refactor select subqueries into joins?

最佳答案

确实没有办法解决这个问题。 SQL 引擎编译查询以运行整个 查询,而不仅仅是其中的一部分。在编译期间,查询引擎不知道结果是否相同。

更有可能的是,您可以将子查询移动到 from 子句并在那里找到优化。

如果对此感兴趣,您应该用您正在使用的实际查询编写另一个问题。这是一个与这个不同的问题(“如何重新表述这个查询”而不是“我怎样才能有条件地运行这个”)。

关于mysql - 如何从同一查询中的另一列中选择数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com