使用相同数据创建跨列的公共标识符

时间:2016-01-04 13:03:30

标签: tsql server

我有一个字典,其中包含原始单词和单词的altforms。我目前的情况是这样的:

|---------------------|---------------------|------------------|
|         WordID      |         Word        |     OrigWord     |
|---------------------|---------------------|------------------|
|         1           |          aah        |       null       |
|---------------------|---------------------|------------------|
|         2           |         aahs        |        aah       |
|---------------------|---------------------|------------------|
|         3           |         aahed       |        aah       |
|---------------------|---------------------|------------------|
|         4           |        aahing       |        aah       |
|---------------------|---------------------|------------------|

字典中有大约270,000个单词,其布局与此类似。

是否有一种相当简单的方法可以为每个变形形式创建一个ID,该形式链接回与下面类似的原始单词?

|---------------------|---------------------|---------------------|------------------|
|         WordID      |         LinkID      |         Word        |     OrigWord     |
|---------------------|---------------------|---------------------|------------------|
|         1           |         null        |          aah        |       null       |
|---------------------|---------------------|---------------------|------------------|
|         2           |         1           |         aahs        |        aah       |
|---------------------|---------------------|---------------------|------------------|
|         3           |         1           |         aahed       |        aah       |
|---------------------|---------------------|---------------------|------------------|
|         4           |         1           |        aahing       |        aah       |
|---------------------|---------------------|---------------------|------------------|
|         5           |         null        |      aardvark       |       null       |
|---------------------|---------------------|---------------------|------------------|    
|         6           |         5           |      aardvarks      |     aardvark     |
|---------------------|---------------------|---------------------|------------------| 

编辑:

添加了第二个示例单词以进一步解释LinkID功能

1 个答案:

答案 0 :(得分:1)

这可以通过自我加入来实现:

SELECT t1.WordID, 
       t2.WordID as LinkID, 
       t1.Word,
       t1.OrigWord
FROM Words t1 LEFT JOIN Words t2 ON t1.OrigWord = t2.Word