我正在使用Microsoft SQL服务器管理工作室。
我有一个表有一些重复(主键除外,其他一切都相同)。
例如:table_now
我想要的是获得一个没有重复的新表
table_excepted
我需要获得所有三列,但是当我使用
时SELECT DISTINCT MeetingID, CompanyName, MeetingContent.....
它将获得相同的表,因为meetingID始终是不同的。 我希望得到像
这样的东西SELECT MeetingID, DISTINCT CompanyName, MeetingContent
但我不知道该怎么做
感谢。
答案 0 :(得分:2)
根据您的示例数据,如果出现重复条目,您需要MIN(MeetingID)
:
SELECT MIN(MeetingID), CompanyName, MeetingContent
FROM table_now
GROUP BY CompanyName, MeetingContent
也就是说,您可能最好创建新表,将MeetingID
设置为标识列,然后只插入其他两个不同的列值。
CREATE TABLE table_expected
(
MeetingID int identity (1,1),
CompanyName varchar(50),
MeetingContent varchar(50),
CONSTRAINT [PK_table_expected] PRIMARY KEY (MeetingID ASC)
)
INSERT INTO table_expected (CompanyName, MeetingContent)
SELECT DISTINCT CompanyName, MeetingContent
FROM table_now
答案 1 :(得分:2)
SELECT MIN(MeetingID),CompanyName,MeetingContent
FROM [Table_now]
GROUP BY CompanyName,MeetingContent
答案 2 :(得分:2)
您可以使用如下的row_number:
Select * from (
Select *, RowN = Row_Number() over (partition by CompanyName, MeetingContent order by MeetingId) from yourtable ) a
Where a.RowN = 1
或者您可以使用带有以下关系的前1:
Select top 1 with ties * from yourtable
order by Row_Number() over (partition by CompanyName, MeetingContent order by MeetingId)
答案 3 :(得分:1)
简短回答:使用聚合和分钟
SELECT min(meetingID) as MeetingID, companyName, MeetingContent...
FROM table
GROUP BY companyName, MeetingContent...