如果另一个表中的关系丢失,如何插入记录(sql server)?
我希望你能帮助我 我有这样一个场景:如果另一个表中的关系丢失,如何插入记录(sql server)?,sql,tsql,Sql,Tsql,我希望你能帮助我 我有这样一个场景: UserFolders Folders Id | UserId |FolderName |FolderId Id |FolderName 1 | 1 | folder1 | 1 1 | folder1 2 | 2 | folder1 | 1
UserFolders Folders
Id | UserId |FolderName |FolderId Id |FolderName
1 | 1 | folder1 | 1 1 | folder1
2 | 2 | folder1 | 1 2 | folder2
3 | 2 | folder2 | 2 3 | folder3
现在,我需要每个用户都有一个文件夹,所以如果UserFolders表中缺少一些文件夹,我必须插入它们。结果应该是:
UserFolders
Id |UserId |FolderName |FolderId
1 | 1 | folder1 | 1
2 | 1 | folder2 | 2
3 | 1 | folder3 | 3
4 | 2 | folder1 | 1
5 | 2 | folder2 | 2
6 | 2 | folder3 | 3
我尝试过左连接和右连接,但无法解决此问题。非常感谢您的帮助。您可以使用
交叉连接,然后过滤掉现有的连接。要获取缺少的对,请执行以下操作:
select userid, folderid
from (select distinct userid from userfolders) u cross join
folders f left join
userfolders uf
on uf.userid = u.userid and uf.folderid = f.folderid
where uf.userid is null;
添加一个insert
将值插入userfolders
请注意,我没有包括文件夹名称。您不应复制此数据。在文件夹
表中查找
此外,您可能有更好的用户来源,但问题中没有提到