php - MySQL:count(id) 在使用 GROUP BY 时返回 1 而不是实际的总行数

标签 php mysql count group-by

我的查询如下(它搜索上下 4 个级别的 parent 和 child )。这样,我得到了在单个“num”值中找到的行数:大约 ~22k 行。

SELECT COUNT(fts_trip_id) AS num 
FROM feed_trips_se
JOIN departures ON d_departure_id=fts_trip_departure_id
JOIN destinations ON destinations.d_destination_id=d_departure_id
LEFT JOIN destinations AS destChild1 ON destChild1.d_destination_parent_id=destinations.d_destination_id
LEFT JOIN destinations AS destChild2 ON destChild2.d_destination_parent_id=destChild1.d_destination_id
LEFT JOIN destinations AS destChild3 ON destChild3.d_destination_parent_id=destChild2.d_destination_id
LEFT JOIN destinations AS destChild4 ON destChild4.d_destination_parent_id=destChild3.d_destination_id
LEFT JOIN destinations AS destParent1 ON destParent1.d_destination_id=destinations.d_destination_parent_id
LEFT JOIN destinations AS destParent2 ON destParent2.d_destination_id=destParent1.d_destination_parent_id
LEFT JOIN destinations AS destParent3 ON destParent3.d_destination_id=destParent2.d_destination_parent_id
LEFT JOIN destinations AS destParent4 ON destParent4.d_destination_id=destParent3.d_destination_parent_id
WHERE fts_trip_date>=NOW()
ORDER BY fts_trip_date ASC, fts_trip_price ASC

但是,由于我使用了很多 LEFT JOIN,因此数字 ~22k 不是可用行程的正确数量。我需要按实际的 fts_trip_id 对这些行进行分组。

不幸的是,当我执行 GROUP BY 时,我没有得到正确行程数的一行,而是得到了与正确行程数相同的行数 (~8k)。然后所有行都显示一个数字,最常见的是 1,但也有 10 或 13。

老实说,我不知道为什么我在使用 GROUP BY 函数时没有得到 ~8k 的单行值。谁能帮帮我?

最佳答案

您可以使用 COUNT(DISTINCT) : COUNT(DISTINCT fts_trip_id) 获取 ID 的计数。 GROUP BY 将只计算每个 ID 的结果数。

关于php - MySQL:count(id) 在使用 GROUP BY 时返回 1 而不是实际的总行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13881136/

相关文章:

javascript - 通过 jQuery 发布一个巨大的 html 表单

php - RijndaelManaged.CreateEncryptor key 扩展

php - Atom XML 解析错误 : prefix not bound to a namespace

php - 使用输入框搜索数据库并在同一页面上显示结果

MySQL 按 dayofweek 分组的行计数,包括零结果

c# - LINQ 获取 List<List<string>> 中的不同计数/排序

php - 如何使用 Mysql 和 PHP 从多个表中过滤数据,映射日期范围与当前日期

PHP - MySQL "next"- "previous"链接与订购

MySql 查询 - 插入 A select * from B (当 B 仍然填充时)

R根据值的计数创建一个新的向量,直到现有向量的第一个值实例