mysql - 带有连接和分组依据的mysql查询
问题描述
我使用 mysql 数据库处理我的项目,但是当我尝试使用左连接语句从两个表中检索信息时,即使表有很多数据,也无法显示第一个表中的数据并显示空值。这是我的查询
SELECT
hotspots.name,
count(distinct(UserName)) as users,
count(radacctid),
avg(AcctSessionTime)as Avg,
sum(AcctSessionTime) as allacctsession
FROM
radacct
left JOIN
hotspots
ON (radacct.mac_address LIKE hotspots.mac)
GROUP BY
hotspots.name;
这是结果
+------+-------+------------------+-----------+----------------+
| name | users | count(radacctid) | Avg | allacctsession |
+------+-------+------------------+-----------+----------------+
| NULL | 7 | 31 | 7433.6774 | 230444 |
+------+-------+------------------+-----------+----------------+
名称值在热点表中有值但未显示。当我将此查询作为右连接时,它显示名称列并为其他列显示 null
解决方案
有些帐户没有关联的热点。准确地说是31个。由于该hotspots
表位于连接的右侧,因此当没有匹配的 MAC 地址时它将为 NULL。您的查询将 NULL 分组在一起并计算您看到的聚合。
也许你的意思是hotspots
在左边加入?
SELECT hotspots.name,
count(distinct(UserName)) as users,
count(radacctid),
avg(AcctSessionTime)as Avg,
sum(AcctSessionTime) as allacctsession
FROM hotspots left JOIN radacct ON
(radacct.mac_address LIKE hotspots.mac)
GROUP BY hotspots.name;
推荐阅读
- r - 如何使用特定小时的值填充此 data.frame?
- php - 为什么会显示我的 HTML 内容而不显示我的 PHP?
- php - 安装 Laravel Composer 依赖的问题
- javascript - 使用 soundcloud api 将歌曲/音频文件上传到特定的 soundcloud 帐户?
- javascript - then() 和 catch() 子句都可以触发还是只是其中之一?
- python - 从 python 的 eval() 中删除乘法
- laravel - PayPal API 未连接(未给出错误)
- jsf - java.lang.ClassCastException:com.sun.faces.facelets.el.TagMethodExpression 无法转换为 java.lang.String
- c++ - gcc 如何允许 constexpr strlen() 但 clang 不允许?
- flutter - 从 ui 取消 Flutters 计算功能