gpt4 book ai didi

mysql - 在 UNION 之后引用别名进行计算

转载 作者:行者123 更新时间:2023-11-29 12:35:10 27 4
gpt4 key购买 nike

好的,这是查询(伪查询):

SELECT *, (t1.field + t2.field) as 'result', (t1.field * t2.field) as result2 from((select as t1 limit 1) UNION ALL (select as t2 limit 1))

我需要返回两行,然后对这两个字段进行数学运算并将其放入结果别名中。我知道这不太优雅,但我必须将两个查询拼凑在一起(第一个是并集,第二个是数学)

那么,如何引用和使用这两个内部别名?外部选择无法访问内部别名。

我怀疑这里有一个明显的解决方案,但我的大脑丢失了。

最佳答案

当您将两个语句合并在一起时,您的结果是一个结果集。您将构建什么:

FROM
(
(SELECT f1, f2 FROM table1 LIMIT 1)
UNION
(SELECT g1, g2 FROM table2 LIMIT 1)
) derived_table_1

这将为您提供一个名为 衍生表_ 的结果集,其中包含两个分别名为 f1f2 的字段。将有两行,一行来自第一个 SELECT 语句,另一行来自第二个。您在 UNION 查询中分配的表别名不再可引用。它们仅存在于自己的 SELECT 语句中。

如果 Table1 和 Table2 之间存在关系,那么您需要在此处进行 JOIN:

SELECT
t1.f1 + t2.g1 as result1,
t1.f2 + t2.g2 as result2,
FROM
table1 as t1
INNER JOIN table2 as t2 ON
t1.f1 = t2.g1

如果不存在任何关系,那么您可能正在寻找原始的、笨拙的、与 SELECT 中的 SUM 并集:

SELECT
sum(derived_table_1.f1) as result,
sum(derived_table_1.f2) as result2
FROM
(
(SELECT f1, f2 FROM table1 LIMIT 1)
UNION
(SELECT g1, g2 FROM table2 LIMIT 1)
) derived_table_1

编辑添加 SQLFIDDLE 最后一个示例:http://sqlfiddle.com/#!2/c8707/10

关于mysql - 在 UNION 之后引用别名进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26893282/

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