来自标签的SQL构建联结表

时间:2013-12-02 04:04:04

标签: sql sql-server

我正在使用MSSQL,并且我已经生成了一个标签表,例如:

tag_id |  name
0      |  compost
1      |  ritual
...   ... 

我有另一张这样的表

obj_id |  name   |  desc
0      |  obj1   |  used for ritual
1      |  obj2   |  used for compost
2      |  obj3   |  compost and ritual
3      |  obj4   |  compost, ritual, compost
   ...

我正在尝试编写一个查询或过程来填充一个联结表,其中标签类似于desc,没有重复(但允许一个项目使用多个标签)。例如,它应输出:

tag_id | obj_id
0      | 1
0      | 2
0      | 3
1      | 0
1      | 2
1      | 3

1 个答案:

答案 0 :(得分:4)

这是您想要的查询:

select t.tag_id, o.obj_id from tags t
inner join othertable o
on o.[desc] like '%' + t.name + '%'

SQL Fiddle


顺便说一下,最好不要使用desc作为列名。这会强制您将名称放在方括号中[desc],因为您正在使用列名称的关键字。