left join 后怎么去重? distinct不起作用,group by报错?

从你的sql语句中可以看出,你的sql基础有点差,建议先去学一下基础

明显的错误如下:

1.使用group by后面跟字段名 以该字段分组查询,所以select不用 *  而是group by的字段名,group by后面不跟条件

2.left join 是左连接 用法以a,b表为例 select....from a left join b on a.xx=b,xx     a.xx和b.xx是相同等价字段

3.distinct 是去重,用法是放在 select后面 字段名前面,比如 select distinct name from 表a,代表查询名字,名字各不相同

3.顺序问题,where不能放在group by后面,而是having放在group by后面,having和where有相同的功能,不同在于位置不同

sql书写顺序:select --> from --> where --> group by --> having --> order by 

sql执行顺序:from --> where --> group by --> having --> select --> order by

 

      from: 需要从哪个数据表检索数据 。

  where: 过滤表中数据的条件。

  group by: 如何将上面过滤出的数据分组。

  having: 对上面已经分组的数据进行过滤的条件。

  select: 查看结果集中的哪个列,或列的计算结果。

  order by: 按照什么样的顺序来查看返回的数据。

题主,你这是语法有问题,group by 后面要跟的是having做开头,而不是用 where

group by 写where 后面,注意sql的语法顺序,另外group by 是按一个字段分组group by t.S_ID就行了,后面加个= a.naub_id干嘛?

1. group by 需要放到where 后面才行, 正确格式例如:

select t.name from table t

where  table.state=1

group by  name

 

2.  group by 后面表示分组的表字段, 不能是等于关联

 

 

sql错的地方太多了        left join on 后面条件不能单一个字段,group by 后面不能是一个条件。而且group by要放到where后面