sql选择半相异半不相异
我正在使用Microsoft SQL server management studio 我有一个有一些重复的表(除了主键,其他都是一样的) 例如:现在使用表_sql选择半相异半不相异,sql,sql-server,Sql,Sql Server,我正在使用Microsoft SQL server management studio 我有一个有一些重复的表(除了主键,其他都是一样的) 例如:现在使用表_ MeetingID(主键)-公司名称-会议内容 1-A_公司-你好 2-A_公司-你好 3-B_公司-苹果 4-B_公司-香蕉 我想做的是得到一个没有重复的新表 表1除外 MeetingID(主键)-公司名称-会议内容 1-A_公司-你好 3-B_公司-苹果 4-B_公司-香蕉 我需要得到所有三列,但当我使用 SELECT DIS
- MeetingID(主键)-公司名称-会议内容
- 1-A_公司-你好
- 2-A_公司-你好
- 3-B_公司-苹果
- 4-B_公司-香蕉
- MeetingID(主键)-公司名称-会议内容
- 1-A_公司-你好
- 3-B_公司-苹果
- 4-B_公司-香蕉
SELECT DISTINCT MeetingID, CompanyName, MeetingContent.....
它将得到相同的表,因为meetingID总是不同的。
我想买一件像这样的东西
SELECT MeetingID, DISTINCT CompanyName, MeetingContent
但我不知道怎么做
谢谢。根据您的样本数据,如果条目重复,您需要
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
简短回答:使用聚合和最小值
SELECT min(meetingID) as MeetingID, companyName, MeetingContent...
FROM table
GROUP BY companyName, MeetingContent...
您可以按如下方式使用行号:
Select * from (
Select *, RowN = Row_Number() over (partition by CompanyName, MeetingContent order by MeetingId) from yourtable ) a
Where a.RowN = 1
Select top 1 with ties * from yourtable
order by Row_Number() over (partition by CompanyName, MeetingContent order by MeetingId)
或者,您可以将top 1与领带一起使用,如下所示:
Select * from (
Select *, RowN = Row_Number() over (partition by CompanyName, MeetingContent order by MeetingId) from yourtable ) a
Where a.RowN = 1
Select top 1 with ties * from yourtable
order by Row_Number() over (partition by CompanyName, MeetingContent order by MeetingId)
选择最小值(会议ID)、公司名称、会议内容。。。从按公司名称的表组中,MeetingContent…
尝试此链接,它显示了与示例相同的内容。我想创建以MeetingID作为主键的表,我使用“选择MIN(MeetingID)作为MeetingID,公司名称,MeetingContent From table\u现在按公司名称分组,MeetingContent”我尝试将meetingID设置为主键,但它不起作用。如何在将这些数据放入表的同时设置主键?Thank我想创建一个以MeetingID作为主键的表,我使用了“SelectMin(MeetingID)作为MeetingID,CompanyName,MeetingContent FROM table_now GROUP BY CompanyName,MeetingContent”并尝试将MeetingID设置为主键,但不起作用。如何在将这些数据放入表的同时设置主键?Thanks@travis我将创建表脚本添加到我的答案中。首先创建表,然后插入其中。您将使用底部查询,通过在插入/选择中省略MeetingID
,它将为您自动增加标识列。我使用'select min(MeetingID)作为MeetingID,companyName,MeetingContent。。。从表组按公司名称,MeetingContent'但我不能将MeetingID更改为主键,我能做什么?谢谢