gpt4 book ai didi

mysql - 错误 1054 子查询中的未知列

转载 作者:行者123 更新时间:2023-11-29 12:47:23 25 4
gpt4 key购买 nike

我有一个相当复杂的 SQL 语句,它不起作用,我需要修复。我正在尝试类似以下内容

SELECT
t1.id,
COALESCE(
(
SELECT
t2.value
FROM
my_table AS t2
WHERE
t2.id = t1.id AND
t2.ref = 'aa'
),
(
SELECT
SUM(t3.value) AS value
FROM
(
SELECT
t4.value
FROM
my_table as t4
WHERE
t4.id = t1.id AND
t4.ref IN ('bb', 'cc')
) AS t3
)
)
FROM
my_table AS t1
WHERE
id IN (1,2,3,4,5)

我需要 COALESCE 函数才能获取具有特定引用的第一个值。但是,对于两个特定的引用,我需要值的总和(叹气)。

我曾经计算另外两个 COALESCE 函数的总和:对于 ref bb 和对于 ref cc。我使用 COALESCE 函数的原因是,因为它是一个总和,如果 bb 或 cc 的值不存在,我必须使用 0。错误在于,如果 bb 或 cc 的值都不存在,则总和为 0(而不是 null),并且外部 COALESCE 函数返回 0 而不是 null。

因此,我尝试按照上面的方式重构语句,但收到错误

Error Code: 1054. Unknown column 't1.id' in 'where clause' on line 23

有什么建议吗?

编辑

忘记 COALESCE 函数。以下返回相同的错误

SELECT
t1.id,
(SELECT
SUM(t3.value) AS value
FROM
(
SELECT
t4.value
FROM
my_table as t4
WHERE
t4.id = t1.id AND
t4.ref IN ('bb', 'cc')
) AS t3
) AS value
FROM
my_table AS t1
WHERE
id IN (1,2,3,4,5)

最佳答案

请记住,子查询的结果对于外部查询显示为表。您正在做的事情归结为:

SELECT foo         // query #3
FROM (
SELECT bar // query #2
FROM (
SELECT baz // query #1
FROM t1
) AS t2
) AS t3

内部查询 #1 返回一个表,其中包含名为 baz 的单个列以查询 #2。该查询尝试从该虚拟表中选择名为 bar 的列,但其中只有 baz。所以这是一个“未知列”错误。

这同样适用于查询#3(外部)。它需要一个表中只有一个 bar 的名为 foo 的字段。

如果您希望查询正常工作,您需要更多类似的内容:

SELECT foo
FROM (
SELECT COALESCE(....) AS foo // <--note the alias here
etc...

关于mysql - 错误 1054 子查询中的未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25266761/

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