SQL在另一个表中查找记录(使用Like?)

时间:2017-04-25 11:06:12

标签: sql sql-server sql-server-2008 tsql

过去两天我一直试图让这个工作失败,希望我能找到一个可以提供帮助的人。

一个表包含主要事件,另一个表包含基于另一个表中主要事件的次要事件。例如,Table1包含ID,DATE和NUMBER(以及其他几个列)。这些记录按编号连续编号,每个ID和每天。

如果第一个表中的项目有一个或多个,则表2包含次要事件。它使用相同的信息但添加了SEQ列和NARR列(以及其他列)。下表中的一个条目可以有多个条目。

enter image description here

我试图找到一种方法来搜索table1中的每个事件,其中table2中至少有一条记录包含一个单词;在这个例子中“小部件”。基本上,基于上面的例子,我将被返回(我查看了不会被返回的记录)。

enter image description here

所以没有小事件或有轻微事件但没有任何表示“小部件”的项目会被显示。每个专业可以有超过一百个小记录。我想要它做的就是告诉我,如果没有一个小的记录,那么不会说“小部件”,或者它没有轻微的记录。

我希望这一切都有道理。如果有任何问题,请告诉我。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

听起来你想要not exists。像这样:

select t1.*
from table1 t1
where not exists (select 1
                  from table2 t2
                  where t2.id = t1.id and t2.number = t1.number and
                        t2.narr like '%widget%'
                 ) or
      not exists (select 1
                  from table2 t2
                  where t2.id = t1.id and t2.number = t1.number 
                 );

答案 1 :(得分:0)

使用Not IN:

Select * 
from table1 t1 
where t1.number not in(select number from Table2 t2 where narr like'%widget%')