我有一个不寻常的问题,看起来很简单,但我在SQL Server存储过程中难倒。
我有2张表,如下所述。
tblMaster
ID, CommitDate, SubUser, OrigFileName
示例数据
ID CommitDate SubUser OrigFileName
----------------------------------------
1 2014-10-07 Test1 Test1.pdf
2 2014-10-08 Test2 Test2.pdf
3 2014-10-09 Test3 Test3.pdf
上表基本上是跟踪已提交文件的标头表。除此之外,我们还有一个具有以下结构的详细信息表。
tblIndex
ID, FileID (Linking column to the header row described above), Word
示例数据:
1. 1, 1, Oil
2. 2, 1, oil
3. 3, 2, oil
4. 4, 2, tank
5. 5, 3, tank
以上行表示我们要搜索的单词,如果某个条件匹配,则返回相应的文件名/标题行ID。我想要做的就是如果我搜索
非常感谢任何帮助/想法。
答案 0 :(得分:0)
一个简单的选择就是做这样的事情:
SELECT FileID
FROM tblIndex t
WHERE t.Word LIKE '%oil%' OR t.Word LIKE '%tank%'
GROUP BY FileID
HAVING COUNT(*) > 1
这假设你的tblIndex中没有重复。
我也不确定你是否真的需要这样的。根据您没有的样本数据,基本比较会更有效,并且可以避免可能的碰撞。
答案 1 :(得分:0)
SELECT distinct FileID,COUNT(distinct t.word) FROM tblIndex t
WHERE t.Word LIKE '%oil%' OR t.Word LIKE '%tank%'
GROUP BY FileID
HAVING COUNT(distinct t.word) > 1