gpt4 book ai didi

Mysql LEFT Join查询在添加Count() mysql函数时只返回一行

转载 作者:可可西里 更新时间:2023-11-01 07:49:02 33 4
gpt4 key购买 nike

我有这个让我头疼的 mysql 查询(演变两个表:UsersFiles):

SELECT Users.GUID, Users.Name, Users.CreationDate, Files.Date, 
Count(Files.GUID) As FilesCount
FROM Users

LEFT JOIN Files ON Users.GUID = Files.UserGUID

WHERE Users.Group = '1'

当我执行它时,它总是 返回 1 行(这不是我想要的)。但是如果我删除它:

Count(Files.Date) As FilesCount

它正确地返回了我期望的所有行。

我基本上需要获取属于用户的文件数(以及用户信息)

我的问题是:如何解决这个问题并使 mysql 查询返回用户基本信息以及文件数?

顺便说一句,我将 CodeIgniter 2 与 PHP 5 一起使用(尽管我认为这在这里并不重要...)

最佳答案

如果没有 GROUP BY 子句,COUNT() 聚合将只返回一行,MySQL 对 GROUP 的存在或内容很宽容BY(在大多数其他 RDBMS 中,您的查询将因语法错误而失败)。

因为您有多个列,您应该加入一个子查询以获得每个 Files.GUID 的计数。尽管 MySQL 将允许您在没有子查询的情况下进行 GROUP BY Users.GUID,这更简单,但您可能无法从 Users.NameUsers 获得预期的结果.创建日期。这种方法更便携:

SELECT
Users.GUID,
Users.Name,
Users.CreationDate,
FileCount
FROM
Users
/* Subquery returns UserGUID and associated file count */
LEFT JOIN (
SELECT UserGUID, COUNT(*) AS FileCount
FROM Files
GROUP BY UserGUID
) fc ON Users.GUID = fc.UserGuid
WHERE Users.Group = 1

关于Mysql LEFT Join查询在添加Count() mysql函数时只返回一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12906215/

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