gpt4 book ai didi

mysql - 使用 IN mysql 的子查询错误代码 : 1054

转载 作者:行者123 更新时间:2023-11-29 04:34:39 24 4
gpt4 key购买 nike

我实际上是在尝试重写一个查询,以便将 SUM(amount) 计算为一个子查询,数据库名为“sakila”:

SELECT first_name, last_name, SUM(amount) AS totalSpent
FROM sakila.customer c JOIN
sakila.payment p
ON c.customer_id = p.customer_id
GROUP BY last_name, first_name;

我有的是:

SELECT first_name, last_name, SUM(amount) 作为 totalSpent
来自 sakila.customer c
WHERE c.customer_id IN (SELECT customer_id FROM sakila.payment p)
GROUP BY last_name, first_name;

但是,当我尝试运行它时,它显示错误代码 1054,“字段列表”中的未知列“金额”

EER Diagram

最佳答案

这是您当前的查询,实际上我认为这是去这里的方式:

SELECT
first_name,
last_name,
SUM(amount) AS totalSpent
FROM sakila.customer c
INNER JOIN sakila.payment p
ON c.customer_id = p.customer_id
GROUP BY
first_name,
last_name;

这是一个相当精简的查询,因为您正在使用简单的聚合进行连接。如果您想将金额计算为子查询,您可以通过 payment 表上的相关子查询来实现:

SELECT
first_name,
last_name,
SELECT(SUM(amount) FROM sakila.payment p
WHERE p.customer_id = c.customer_id) AS totalSpent
FROM sakila.customer c;

请注意,此查询的成本最高,因为 SELECT 语句中的子查询与外部查询相关。这意味着 MySQL 必须对 customer 表的每一行 运行单独的查询。你的第一个查询可能是去这里的方式,因为它会允许索引和其他优化之类的东西。

关于mysql - 使用 IN mysql 的子查询错误代码 : 1054,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46637937/

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