mysql - MySQL 内部连接查询显示重复条目
问题描述
我写了以下MySQL
内部联接查询。Mysql版本是8.0.18-commercial
select r.network->>"$[0].name" , s.server, s.ipAddr,
from table1 e
inner join table2 s
on e.objectId = s.envId
inner join resources r
on e.objectId = r.envId
inner join tpgs g
on e.accountId = g.objectId
inner join msgTable a
on a.id = (select max(a.id) from msgTable a where a.logId = s.AuditId)
ORDER BY dateSubmitted DESC ;
但是,我收到了一些记录的重复条目。
在这里,s.server
应该只出现一次。
我已添加group by
如下,但出现错误:
select r.network->>"$[0].name" , s.server, s.ipAddr,
from table1 e
inner join table2 s
on e.objectId = s.envId
inner join resources r
on e.objectId = r.envId
inner join tpgs g
on e.accountId = g.objectId
inner join msgTable a
on a.id = (select max(a.id) from msgTable a where a.logId = s.AuditId)
GROUP BY s.server
ORDER BY dateSubmitted DESC ;
错误:
Code: 1055. Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db.s.ipAddr' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
请建议如何更新查询以消除重复行。
解决方案
我可以通过如下修改查询来获得所需的结果:
select MAX(r.network->>"$[0].name") , s.server, MAX(s.ipAddr),
from table1 e
inner join table2 s
on e.objectId = s.envId
inner join resources r
on e.objectId = r.envId
inner join tpgs g
on e.accountId = g.objectId
inner join msgTable a
on a.id = (select max(a.id) from msgTable a where a.logId = s.AuditId)
GROUP BY s.server
ORDER BY dateSubmitted DESC ;
推荐阅读
- c# - C# pinvoke - 类派生
- c++ - 在 GCC 8 上工作的 Consexpr 计数器,不限于命名空间范围
- angular - 为什么我的 Angular 6 按钮没有波纹?
- python - 如何在python中将excel文件转换为这种格式?
- r - 使用共享文件夹 Excel 表刷新闪亮应用程序中的数据
- jquery - 按特定字符串对 DataTable 进行排序
- python - 从 csv 文件中抓取多个 url
- python - 为什么“_”在交互式 shell 中并不总是给我最后的结果
- xml - OOXML 标题未显示
- java - Java - 直接在类上作为静态字段的属性