SQL查询在只有一个列值重复时删除行

时间:2011-12-22 06:59:02

标签: sql sql-server

我正在使用sql server 2000 我有一张如下表:

lr_no   seq len       
8402606 003 48
8410184 002 50
8410184 003 30
8411592 002 33
8415732 005 12
8416530 002 24
8415732 004 27

其中8410184& 841573是重复的。

我想过滤表格,以便在重复lr_no的情况下,然后根据max(len)选择行。

最终输出应为

    lr_no   seq len       
    8402606 003 48
    8410184 002 50
    8411592 002 33
    8416530 002 24
    8415732 004 27

任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

SELECT 
 lr_no,   max(seq) as seq, max(len) as len
FROM
 table
GROUP BY 
 lr_no

编辑

好的,重新开始:

SELECT 
  lr_no,   seq, len
FROM
 table t1
WHERE 
 not exists (
  SELECT 
   1 
  FROM 
   table t2 
  WHERE 
   t1.lr_no = t2.lr_no and 
   t2.len < t1.len)

答案 1 :(得分:0)

SELECT t.lr_no, t.seq, t.len
    FROM YourTable t
        INNER JOIN (SELECT lr_no, MAX(len) AS MaxLen
                        FROM YourTable
                        GROUP BY lr_no) q
            ON t.lr_no = q.lr_no
                AND t.len = q.MaxLen