从具有重复项的表生成连接表

时间:2012-05-31 13:42:21

标签: sql sql-server duplicate-data auto-generate database-table

我有一个SQL Server数据库表( DuplicateIds ),其中包含来自另一个表(单词)的重复单词的ID。这是表DuplicateIds中的数据示例:

        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。

现在我想知道我是否可以使用DuplicateIds中的数据编写一个为我生成这个新连接表的(T)SQL语句?

2 个答案:

答案 0 :(得分:4)

这应该这样做:

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

答案 1 :(得分:0)

试试这个。我不确定在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