查询去除重复的值

kunyou7003 2016-10-17 12:25:14
表名position
id Staff_name CCC CCC_date Unit
1 yy 1 1 1
2 yy 2 2 2
3 yy 2 2 3
想根据名字查出CCC和CCC_date的记录,但是CCC和CCC_date有重复,只需要查出不重复的部分
结果如下
id Staff_name CCC CCC_date
1 yy 1 1
2 yy 2 2
但是我写的sql有错误,请问如何修改
$sql1 = "SELECT max(id),CCC,CCC_date FROM position WHERE Staff_name = yy GROUP BY CCC,CCC_date";
...全文
118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
道素 2016-10-18
  • 打赏
  • 举报
回复
引用 3 楼 kunyou7003 的回复:
[quote=引用 1 楼 ch21st 的回复:]

select * from (
   select *,row_number(partition by CCC,CCC_date order by id)  as rn from position
) t where t.rn=1
上面的例子不太准确 应该是 id Staff_name CCC CCC_date Unit 1 yy 1 1 1 2 yy 2 2 2 3 yy 2 2 3 4 kk 3 3 3 结果 id Staff_name CCC CCC_date 1 yy 1 1 2 yy 2 2 [/quote] 如果想去重后,其他字段保留,用上面的办法,将判断重复条件的字段都加入到partition by中

select * from (
   select *,row_number(partition by Staff_name ,CCC,CCC_date order by id)  as rn from position
) t where t.rn=1
如果没有别的字段,可以用group by 或者 distinct都可以 用distinct只返回四个字段,用group by可以重复数据中最大或最小的ID也拿出

select distinct Staff_name ,CCC,CCC_date from position
道素 2016-10-17
  • 打赏
  • 举报
回复

select * from (
   select *,row_number(partition by CCC,CCC_date order by id)  as rn from position
) t where t.rn=1
巨巨巨 2016-10-17
  • 打赏
  • 举报
回复

SELECT MIN(id), Staff_name, CCC, CCC_date
FROM position 
GROUP BY Staff_name, CCC, CCC_date
kunyou7003 2016-10-17
  • 打赏
  • 举报
回复
引用 1 楼 ch21st 的回复:

select * from (
   select *,row_number(partition by CCC,CCC_date order by id)  as rn from position
) t where t.rn=1
上面的例子不太准确 应该是 id Staff_name CCC CCC_date Unit 1 yy 1 1 1 2 yy 2 2 2 3 yy 2 2 3 4 kk 3 3 3 结果 id Staff_name CCC CCC_date 1 yy 1 1 2 yy 2 2
kunyou7003 2016-10-17
  • 打赏
  • 举报
回复
引用 1 楼 ch21st 的回复:

select * from (
   select *,row_number(partition by CCC,CCC_date order by id)  as rn from position
) t where t.rn=1
还要选出指定的staff_name,staff name是不一样的

34,571

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧