日期:2014-05-17  浏览次数:20831 次

不是groupBy表达式 为什么 来着有分 急
select a.USER_ID, a.PWD, a.STATUS, a.CREATE_DATE, a.UPDATE_DATE, a.EMAIL, 
  a.FAX, a.CALL, a.MAILINGADDRESS, a.DEPARTMENT ,wm_concat(b.STUDYPOSITION) STUDYPOSITION ,d.CATEGORY_NAME ,e.catelog_id from T_USER_INFO a left join T_SOCIETY_OFFICE b on 
  a.USER_ID=b.USER_ID left join T_USER_CATEGORY c on c.user_id=a.user_id left join T_CATEGORY d on c.CATEGORY_ID=d.CATEGORY_ID  
  left join t_user_catelog e on e.user_id=a.user_id group by a.user_id 
举个例子 在做项目时 多表查询 但是一个人如果有多种角色的话查询出来的是两条记录 我只想让他显示一条于是用了那个
wm_concat 函数 报错 说 不是groupby表达式

------解决方案--------------------
select a.USER_ID, a.PWD, a.STATUS, a.CREATE_DATE, a.UPDATE_DATE, a.EMAIL,
a.FAX, a.CALL, a.MAILINGADDRESS, a.DEPARTMENT ,wm_concat(b.STUDYPOSITION) over(partition by a.user_id)STUDYPOSITION ,d.CATEGORY_NAME ,e.catelog_id from T_USER_INFO a left join T_SOCIETY_OFFICE b on
a.USER_ID=b.USER_ID left join T_USER_CATEGORY c on c.user_id=a.user_id left join T_CATEGORY d on c.CATEGORY_ID=d.CATEGORY_ID
left join t_user_catelog e on e.user_id=a.user_id
是这个分析函数适用,分组的话除a.USER_ID外其他字段不能查出来。
------解决方案--------------------
group by a.user_id 那么你select只能有 a.user_id 或者聚合函数 
你可以group by那些所有一样的字段
------解决方案--------------------
分组后 只能查找自己的字段 和聚合函数 。 。
------解决方案--------------------
既然是取group,函数的使用也势必要有一定的限制来配合group的特点

这里解释挺全面的:
http://www.w3school.com.cn/sql/sql_groupby.asp

但是怎么还会重复了呢?能把查询出来的结果贴出来吗?
------解决方案--------------------
探讨

结果是这样的 一个人可以有多个职位 用户表 和 职位表 多对多关系
userid username postion
1 张三 经理
1 张三 主管

------解决方案--------------------
一个人如果有多种角色的话查询出来的是两条记录
效果肯定是和
1 张三 经理
1 张三 主管
差不多 楼主想怎么实现呢? 最好弄个图 不然很难理解口头描述
------解决方案--------------------
group by 只能查询条件字段和聚合函数,其它,想知道,就只能自己写函数了。网上找找看,应该有这种函数,像把字段合并啊,不过我用过,看不懂,而且运行不了,数据库烦啊。