Sql 从具有重复项的表生成连接表
我有一个SQL Server数据库表(DuplicateID),其中包含另一个表(words)中重复单词的ID。下面是DuplicateID表中数据的示例:Sql 从具有重复项的表生成连接表,sql,sql-server,duplicate-data,auto-generate,database-table,Sql,Sql Server,Duplicate Data,Auto Generate,Database Table,我有一个SQL Server数据库表(DuplicateID),其中包含另一个表(words)中重复单词的ID。下面是DuplicateID表中数据的示例: word_id | word ---------------------------------- 244 | ape 603 | ape 1873 | ape 372 | banana 3095
word_id | word
----------------------------------
244 | ape
603 | ape
1873 | ape
372 | banana
3095 | banana
……等等。通常只有两个或三个副本,但也有10个或更多副本的情况
现在我想使用这个表和副本来创建一个新表,连接相同单词的ID。我猜新的桌子会像这样:
word_id | connected_id
----------------------------------
244 | 603
244 | 1873
603 | 244
603 | 1873
1873 | 244
1873 | 603
372 | 3095
3095 | 372
有了这个表,我可以用它的ID查找某个单词,并得到所有相同单词的ID
现在我想知道是否可以编写一个(T)SQL语句,使用DuplicateID中的数据为我生成这个新的连接表 这应该可以做到:
SELECT
di.word_id
,di2.word_id connected_id
into NewTable
from DuplicateIds di
inner join DuplicateIds di2
on di2.word = di.word
and di2.word_id <> di.word_id
选择
di.word\u id
,di2.word\u id已连接\u id
变成牛顿表
来自重复ID di
内部连接重复ID di2
关于di2.word=di.word
和di2.word\u id di.word\u id
这应该可以做到:
SELECT
di.word_id
,di2.word_id connected_id
into NewTable
from DuplicateIds di
inner join DuplicateIds di2
on di2.word = di.word
and di2.word_id <> di.word_id
选择
di.word\u id
,di2.word\u id已连接\u id
变成牛顿表
来自重复ID di
内部连接重复ID di2
关于di2.word=di.word
和di2.word\u id di.word\u id
试试这个。我不确定sql server中如何实现不相等
INSERT INTO DuplicateIds
SELECT a.word_id, b.word_id connected_id
from Words a,Words b
where a.word=b.word
and a.word_id <> b.word_id
插入到重复ID中
选择a.word\u id,b.word\u id已连接\u id
从a字到b字
其中a.word=b.word
和a.word\u id b.word\u id
试试这个。我不确定sql server中如何实现不相等
INSERT INTO DuplicateIds
SELECT a.word_id, b.word_id connected_id
from Words a,Words b
where a.word=b.word
and a.word_id <> b.word_id
插入到重复ID中
选择a.word\u id,b.word\u id已连接\u id
从a字到b字
其中a.word=b.word
和a.word\u id b.word\u id
嗨!这个解决方案是否要求我首先复制表DuplicateID(在您的示例中我指的是di2表)?无需担心-我刚刚看到那些包含别名的表。它似乎工作得很好-创建了一个包含2534条新记录的表!你好这个解决方案是否要求我首先复制表DuplicateID(在您的示例中我指的是di2表)?无需担心-我刚刚看到那些包含别名的表。它似乎工作得很好-创建了一个包含2534条新记录的表!