使用左连接连接表时如何正确查询 group by

Posted

技术标签:

【中文标题】使用左连接连接表时如何正确查询 group by【英文标题】:How correct query for group by when joining table using left join 【发布时间】:2015-05-22 05:01:40 【问题描述】:

此查询不断返回错误:

不是 GROUP BY 表达式

有人可以帮我更正我的查询吗?我不擅长加入表格。

select distinct(nama), namabapa, data_saranabapa.nokpbapa, namaibu, data_saranaibu.nokpibu
from ((data_semua_murid
      left join data_saranabapa on data_semua_murid.nokpbapa=data_saranabapa.nokpbapa)
      left join data_saranaibu on data_semua_murid.nokpibu=data_saranaibu.nokpibu)
where kodsekolah='WBA0002'
group by namabapa
order by namabapa asc

【问题讨论】:

您需要按以下方式分组:nama,namabapa, data_saranabapa.nokpbapa, namaibu, data_saranaibu.nokpibu ....查看此帖子::***.com/questions/13962772/… 谢谢大佬.. 解决了! DISTINCT 不是列上的函数,它适用于整个选定的行。选择不同的(nama),namabapa... eq 选择不同的 nama,namabapa... eq 选择不同的 nama,(namabapa)... 这是哪个 dbms?一般的 GROUP BY 规则说:如果指定了 GROUP BY 子句,则 SELECT 列表中的每个列引用必须要么标识一个分组列,要么是一个集合函数的参数。 【参考方案1】:

您必须按您在查询中选择的所有列进行分组

select distinct(nama), namabapa, data_saranabapa.nokpbapa, namaibu, data_saranaibu.nokpibu
from ((data_semua_murid
      left join data_saranabapa on data_semua_murid.nokpbapa=data_saranabapa.nokpbapa)
      left join data_saranaibu on data_semua_murid.nokpibu=data_saranaibu.nokpibu)
where kodsekolah='WBA0002'
group by nama, namabapa, data_saranabapa.nokpbapa, namaibu, data_saranaibu.nokpibu
order by namabapa asc

【讨论】:

以上是关于使用左连接连接表时如何正确查询 group by的主要内容,如果未能解决你的问题,请参考以下文章

MySQL group by 左连接

如何使用 group_concat 和左连接计算 mysql 查询的结果

如何在连接多个表时使用 GROUP BY 连接字符串?

当涉及两个以上的表时,如何将来自相似字段的单个表的两个左连接转换为 LINQ? [复制]

MySQL调优--05---多表查询优化子查询优化 ORDER BY优化GROUP BY优化分页查询优化

sql-多表查询JOIN与分组GROUP BY