数据库结构
id  name1 name2  ......现在我要筛选出如下记录比如数据
1   张三  李四
2   张三  李四
3   李四  王五
4   李四  赵六
5   张三  王五
6   李四  赵六我需要的数据如下
2   张三   李四
3   李四   王五
5   张三   王五
6   李四   赵六
也就是说我要查找如果name1 和 name2 在数据库里存在都对应相等的记录,就选择ID最大的那个出来,如果没有对应相等的就直接读出来就好了。就是去掉name1 和name2 对应相等的重复记录......不知道表达明白没有?各位帮帮,我SQL菜鸟!!

解决方案 »

  1.   

    select * from 表名 as t1
    where not exists 
    (select * from 表名 as t2 where t2.name1=t1.name1 and t2.name2=t1.name2 and t1.id<t2.id)
      

  2.   


    CREATE TABLE t1
    (
     id INT ,
     name1 NVARCHAR(20),
     name2 NVARCHAR(20)
    )INSERT INTO t1 VALUES(1,'张三','李四')
    INSERT INTO t1 VALUES(2,'张三','李四')
    INSERT INTO t1 VALUES(3,'李四','王五')
    INSERT INTO t1 VALUES(4,'李四','赵六')
    INSERT INTO t1 VALUES(5,'张三','王五')
    INSERT INTO t1 VALUES(6,'李四','赵六')
    SELECT * FROM t1 WHERE id NOT IN (
    SELECT a.id FROM t1 a,t1 b
    WHERE a.name1=b.name1 AND a.name2=b.name2 AND a.id<b.id)id          name1                name2
    ----------- -------------------- --------------------
    2           张三                   李四
    3           李四                   王五
    5           张三                   王五
    6           李四                   赵六(4 行受影响)
      

  3.   

    select * from table1 where id in (select max(id) from table1 group by name1,name2) order by id
      

  4.   

    其他可以偷懒点,直接加个group by 就行了。
    如:SELECT [name],[name2]
      FROM text    group by name,name2