表T
有字段 id  name  alias  age  isDelete对于name 和  alias 都相同的数据,保证其中体条isdelete为false,其他的为true;举例:记录有:
id  name  alias  isDelete
1   张三  小张   false
2   李四  小李   false
3   张三  嚣张   false变为:
id  name  alias  isDelete
1   张三  小张   false
2   李四  小李   false
3   张三  嚣张   true

解决方案 »

  1.   

    SELECT DISTINCT name alias age isDelete FROM TABLE WHERE isDelete  = false的插入到临时表中,然后剩下的就是你想要的了
      

  2.   

    select id,name,alias,isDelete=(case when no=1 then 'false' else 'true' end)
    from (select row_number()over(partition by name,alias order by id) no,* from tb) a
      

  3.   


    select id ,name, alias,isDelete=case when ((select from tb where name=a.name and alias=a.alias and id<=a.id)>1) then 2 else 1 end
    from tb a
      

  4.   


    他的意思是按照name,alias排序 
    case when no=1 then 'false' else 'true' end的意思是当排序列为1的时候 isdelete等于false 其他的时候为true 这样就满足了你的要求
      

  5.   

    select row_number()over(partition by name,alias order by id) no,* from tb
    是增加排序列
      

  6.   

    谢谢 非常感谢!!
    我猜到了  去查了下 partition by的含义!!看懂了!
    非常感谢2位大侠!
      

  7.   

     
     row_number()
     
     cte
     临时表
      

  8.   

    根据你给出的数据和结果,alias字段比较的是拼音吧,不然“小张”和“嚣张”怎么会相同呢?