我遇到了一个我想要构建的查询的小问题。 我们的想法是在同一个旧表上基于连接构造一个新表,在那里进行某种“昂贵”的计算。
问题
我无法在基础选择的where(或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*
);
我已经考虑过使用函数或其他东西,但我认为它应该在一个简单的查询中可行。
答案 0 :(得分:1)
您是否尝试过将内部查询再包装一次?
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*
);