我在SQL Server Management Studio 2008中工作。
我需要编写一个查询,在一个表中的几个字段中搜索大量的单词列表(大约50个单词)。我目前的想法是简单地编写一个IN
子句来放入我的所有单词。但是,由于我必须搜索的单词数量,创建此IN
子句可能会变得乏味。
有更好的方法吗?
我当前的查询类似于以下内容:
SELECT
x,
y
FROM Table1
WHERE
x IN ('word1', 'word2', ... , 'wordx')
OR y IN ('word1', 'word2', ... , 'wordx')
答案 0 :(得分:5)
你可以创建一个表(比方说word_table
)并将所有单词存储在其中。
然后你可以简单地做
SELECT x, y
FROM Table1
WHERE
x IN (SELECT word FROM word_table) OR
y IN (SELECT word FROM word_table)
答案 1 :(得分:5)
select t.*
from your_table t
left join word_table wx on wx.word = t.x
left join word_table wy on wy.word = t.y
where wx.word is not null
or wy.word is not null
答案 2 :(得分:1)
正如其他人所提到的,word_table的用法。我首选的方法是EXISTS。
SELECT t.*
FROM your_table
WHERE EXISTS (SELECT 1 FROM word_table WHERE t.x=word OR t.y=word)