带有连接和分组依据的mysql查询

标签 mysql left-join

我使用 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/

相关文章:

mysql - 在 .Net 中使用 nhibernate 时,中文字符在 mysql 中存储不正确

php - 如何获取MySQL表中的最小ID值和最大ID值

.net - 在包含计数的子查询上使用左连接的 Linq

sql - 比较多行的开始和结束日期

sql - 我可以向不属于连接的 LEFT JOIN 子句添加条件吗?

python - 使用 pip 安装包时缺少头文件

php - 一些 php mysql 错误

php - 将 SQL 数据库中的数据显示为拓扑

r - 双左加入 dplyr 以恢复值

SQL - 不满足左连接时的交叉连接