我使用 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 |
+------+-------+------------------+-----------+----------------+
name值在hotspots表中有值但不显示 . 当我将此查询作为 right join 进行时,它显示名称列并为其他列显示 null
最佳答案
有些帐户没有关联的热点。其中31个是准确的。由于 hotspots
表位于联接的右侧,因此当没有匹配的 MAC 地址时它将为 NULL。您的查询将 NULL 分组在一起,并计算您看到的聚合。
也许您打算在联接的左侧设置热点
?
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;
关于带有连接和分组依据的mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51170118/