我有下表
ID NAME POINT
100 AAA 100
200 DDD 100
300 FFF 50
我想从此表中删除重复的ID。我想在下面
DISTINCT
我已经在我的选择查询中使用SELECT DISTINCT ID,NAME,POINT FROM Tab ORDER BY ID;
关键字喜欢这个
www.mywebsite.com
不行。我只需要每个记录一个唯一的ID。那么如何从select查询中删除重复的id?我的条件是如果所有记录都相同,则取第一条记录。
答案 0 :(得分:4)
CREATE TABLE #Table1
([ID] int, [NAME] varchar(3), [POINT] int)
;
INSERT INTO #Table1
([ID], [NAME], [POINT])
VALUES
(100, 'AAA', 100),
(100, 'AAA', 150),
(100, 'AAA', 70),
(200, 'DDD', 100),
(200, 'DDD', 65),
(300, 'FFF', 50)
SELECT ID,NAME,POINT FROM (SELECT* , ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID,NAME ) AS RN FROM #TABLE1)A
WHERE RN=1
输出
ID NAME POINT
100 AAA 100
200 DDD 100
300 FFF 50
答案 1 :(得分:3)
我认为最简单的选择是group by
语句。那就是:
SELECT ID, NAME, POINT GROUP BY ID
您可能需要添加一些其他逻辑,深化您要选择的POINT
值(例如,max,min等)。那就是:
SELECT ID, NAME, MAX(POINT) GROUP BY ID, NAME
答案 2 :(得分:0)
使用rowid
伪列。
DELETE FROM your_table
WHERE rowid not in (SELECT MIN(rowid) FROM your_table GROUP BY id, name);
如果您的PK中有更多列,请将其添加到group by
列表中。