表结构是这样的:
PersonID(不重复自动生成的) ,Name , Sex , Born
根据 Name 跟Sex 判断 不重复
select * from table right join (select name, sex from table group by name,sex) t on table.name = t.name and table.sex = t.sex
手打,可能有错,你试试
没有达到去掉重复的效果
@漫天de光: select distinct * from table right join (select name, sex from table group by name,sex) t on table.name = t.name and table.sex = t.sex
@刘宏玺: 不行,这样的话,跟直接加distinct没区的
我要的是去掉 name sex 重复的
@漫天de光: 你把数据和结果发上来,我自己试试,光说没有用,下次提问题的时候你也把数据都附上
@刘宏玺:
@漫天de光: select PersonID,t.name,t.sex,born from [table] right join (select MAX(PersonID) as id, name, sex from [table] group by name,sex) t on t.id = PersonID
@刘宏玺: 我想查询 Born最接近当前时间的,其他的过滤掉,真的麻烦你了
@漫天de光: select PersonID,t.name,t.sex,born from [table] right join (select MAX(born) as b, name, sex from [table] group by name,sex) t on t.b = born and t.name = [table].name and t.sex = [table].sex
group by name,sex行不行
不行就distinct
但是我需要PersonId 跟Born 也出现在查询的结果中,如果group by name,sex的话会提示PersonId 不在group by 列中
@漫天de光: 肯定的.因为name跟sex不重复了.其它列就有可能含有多个值.
这时候要从这多个值里选一个出来.你的规则是怎样的?比如正续取第一个?
@吴瑞祥: Born是出生日期,我要取出生日期最接近当前日期的
@漫天de光: 那你的需求就是分组取第一条,分组子查询排序条件是 绝对值(getdate()-born)
@吴瑞祥: 能给写个例子吗?谢谢了。大哥,我是新手,我给你加豆子
子查询