我在 MSSQL Server 2012 中有两个表,想将它们合并到一个新表中。它们通过 messageID 列链接。第一个表(消息)有
messageID
sender
date
第二个表(recipientInfo)有
messageID
recipient
主要问题是在 Message 中,messageID 是主键,因此是唯一的。在recipientInfo 中,messageID 不是唯一的(因为一条消息可以有多个收件人)。我想要一张新 table ,上面有其中之一
- 每条消息一行,收件人串联在一列
- 当有多个收件人时,每条消息有多行(每行一个收件人)
最佳答案
也许是这样的(如果您使用的是 MSSQL 2005+):
CREATE TABLE NewTable
(
messageID INT,
sender VARCHAR(100),
recipient VARCHAR(MAX),
date DATETIME
)
INSERT INTO NewTable(messageID,sender,recipient,date)
SELECT
[Message].messageID,
[Message].sender,
STUFF
(
(
SELECT
',' +recipient
FROM
recipientInfo
WHERE
recipientInfo.messageID=[Message].messageID
FOR XML PATH('')
)
,1,1,'') AS recipient,
[Message].date
FROM
[Message]
关于sql - 将两个表合二为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10294846/