gpt4 book ai didi

mysql - SQL VIEW 只返回第一条记录

转载 作者:行者123 更新时间:2023-11-29 14:47:40 26 4
gpt4 key购买 nike

我不确定这里发生了什么。我创建了一个 MySQL View 并从 4 个不同的表中获取一些数据,但它似乎只返回第一条记录。

CREATE OR REPLACE VIEW request_view AS
SELECT
TRequest.id,
TRequest.minutes_required,
TRequest.expires_at,
User.name AS author,
TRequest.abstract_text,
TRequest.full_text,
TGroup.name AS tgroup,
SUM(TOrder.minutes) AS total_minutes
FROM
TRequest

JOIN User ON TRequest.author_id = User.id
LEFT JOIN TGroup ON TRequest.group_id = TGroup.id
LEFT JOIN TOrder ON TRequest.id = TOrder.request_id

ORDER BY TRequest.created_at;

当我尝试选择此 View 时,它只会返回第一条记录:

mysql> select id from request_view;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)

mysql> select id from request_view where id=2;
Empty set (0.00 sec)

我有 30 个 TRequest 行...我是否可以让 View 返回所有 TRequest 记录?或者我只是错误地使用了 View ?

最佳答案

您正在执行SUM,但没有使用GROUP BYSUM 是一个聚合函数,仅对一组行有意义。如果您没有指定任何分组依据的列,则默认情况下会对所有行进行求和,这意味着您只会得到一个结果。

如果您希望 TRequest 中的每一列占一行,请尝试将 GROUP BY TRequest.id 添加到您的 View 定义中。

关于mysql - SQL VIEW 只返回第一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6553548/

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