当前位置: 代码迷 >> Sql Server >> 根据某列值筛选不重复的数据库纪录
  详细解决方案

根据某列值筛选不重复的数据库纪录

热度:77   发布时间:2016-04-24 10:11:10.0
根据某列值筛选不重复的数据库纪录,在线等
ID  字段1  字段2 .. 字段N ..
1       A           X           X       
2       A           X           X      
3       B          X           X       
4       Q          X           X       
5       Q          X           X       
6       B          X           X      

得到结果如下:
ID  字段1  字段2 .. 字段N
1       A           X           X
3       B          X           X
4       Q          X           X
5       Q          X           X

条件:
1  字段N 的值必须为 True
2  字段1 的值 可以有多个,但是除Q 外,其它值只能选1个(就是保证除Q值外,其它值的唯一性)

请教这个怎么写sql 查询语句,谢谢,在线等候,57分全部奉送

------解决方案--------------------
忘了Where里面加上"字段N=true"

SELECT MIN(ID)
    , 字段1
    , 字段2 
    , 字段N
FROM 表名
WHERE 字段1 <> 'Q'
    AND 字段N = 'True'
GROUP BY  字段1
    , 字段2 
    , 字段N
UNION
SELECT ID
    , 字段1
    , 字段2 
    , 字段N
FROM 表名
WHERE 字段1 = 'Q'
    AND 字段N = 'True'

------解决方案--------------------
select * from tb t where not exists(select 1 from tb where 字段1=t.字段1 and id<t.id) and 字段1<>'Q' and 字段N='True'
  相关解决方案