数据库数据
一个表,3个字段,
分别是A,B,C.数据形式是
S 001 01
S 001 02
S 002 01
U 003 01
V 004 01
X 005 01
X 005 02希望得到的结果:
数据中前2个字段相同,并且是多件的数据保留。
即:
S 001 01
S 001 02
X 005 01
X 005 02
这样的数据。

解决方案 »

  1.   

    IF OBJECT_ID('TB')IS NOT NULL DROP TABLE TB
    GO
    CREATE TABLE TB( A VARCHAR(10), B VARCHAR(10), C VARCHAR(10))
    INSERT TB SELECT 'S' ,'001', '01' 
    INSERT TB SELECT 'S' ,'001', '02' 
    INSERT TB SELECT 'S' ,'002', '01' 
    INSERT TB SELECT 'U','003' ,'01' 
    INSERT TB SELECT 'V', '004', '01' 
    INSERT TB SELECT 'X', '005', '01' 
    INSERT TB SELECT 'X', '005', '02'
    SELECT * FROM TB T  WHERE EXISTS(SELECT A,B FROM TB WHERE A=T.A AND B=T.B GROUP BY A,B HAVING COUNT(*)>1) 
    /*A          B          C          
    ---------- ---------- ---------- 
    S          001        01
    S          001        02
    X          005        01
    X          005        02*/
      

  2.   

    select * from tab t where (select count(1) from tab where t.a=a and t.b=b) > 1
      

  3.   


    create table tab(a char(1),b char(3),c char(2))go insert tab
    select 'S' ,'001','01' 
    union select 'S' ,'001' ,'02' 
    union select 'S' ,'002' ,'01' 
    union select 'U' ,'003' ,'01' 
    union select 'V' ,'004' ,'01' 
    union select 'X' ,'005' ,'01' 
    union select 'X' ,'005' ,'02' 
    select * from tab t where (select count(1) from tab where t.a=a and t.b=b) > 1
    drop table tab