从你的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后面