gpt4 book ai didi

mysql - 如何在底层select-join语句中使用create table语句的列别名?

转载 作者:行者123 更新时间:2023-11-29 14:36:34 25 4
gpt4 key购买 nike

我想要构建的查询遇到了一个小问题。这个想法是基于同一个旧表上的联接构建一个新表,并在其中完成某种“昂贵”的计算。

问题

我无法在底层 select 的 where(或 on)子句中使用字段列表的计算结果(别名)。

为什么不再计算一下呢?

  • 我想避免再次计算结果,因为它是一个 1.5 Mio 条目表,并且我加入了所有内容。 on 子句中还有一些条件,但它并没有真正影响操作数量。因此,我不想每次连接都执行两次。
  • 如果可能的话,我现在就想要:)

SQL语句

CREATE TABLE `newTable` AS (
SELECT (*COMPUTATION*) AS `calculated`
FROM oldTable AS t1
JOIN oldTable as t2 ON (
t1.user != t2.user
AND *other conditions*
)
WHERE `calculated` < *some number*
);

我已经考虑过使用函数或其他东西,但我认为它应该可以通过一个简单的查询来实现。

最佳答案

您是否尝试过将内部查询再包装一层?

CREATE TABLE `newTable` AS 
( select PreQuery.Calculated
from ( SELECT (*COMPUTATION*) AS `calculated`
FROM oldTable AS t1
JOIN oldTable as t2 ON
( t1.user != t2.user
AND *other conditions*
) ) PreQuery
where PreQuery.Calculated < *some number*
);

关于mysql - 如何在底层select-join语句中使用create table语句的列别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8909047/

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