Sql 检查另一列中是否存在两列中的任何一列

Sql 检查另一列中是否存在两列中的任何一列,sql,sql-server,Sql,Sql Server,我在表2中有两列T2,在表1中有一列T1。示例数据 Table2: AccountNr OfferNr 123D ITALY 45C Pronto 667 Belgium Table1 Description "Account Number: 123D Offer Number ITALY" "Account Number: 45C Offer Number" "Account Numbe

我在表2中有两列T2,在表1中有一列T1。示例数据

  Table2:  
    AccountNr OfferNr  
    123D       ITALY
    45C        Pronto  
    667        Belgium


  Table1  
Description  
"Account Number: 123D Offer Number ITALY"
"Account Number: 45C Offer Number"  
"Account Number: Offer Number Belgium"
如您所见,表1中的列描述有时包含表2中的所有两列,有时仅包含一列。 我试图列出表2中描述中没有AccountNr或offern的所有行。 如果至少有一个,那么我不会列出它

我尝试的是:

select t2.AccountNr, t2.OfferNr
from Table2 t2
where not exists (select 1 Description
              from Table1 t1
              where t1.Description like ('%' + t2.AccountNr + '%') or  t1.Description like ('%' + t2.OfferNr + '%')
             )

但它似乎丢失了数据,例如,如果我在子查询中仅使用OfferNr in where子句,我得到的行在原始查询中不存在,但应该存在。

如果您希望表1中的所有记录在表2中既没有AccountNr也没有OfferNr,那么下面的操作将起作用。顺便说一下,这和你的一模一样

但是,如果您希望表1中的所有记录在表2中都有AccountNr或offern,或者两者都有,那么下面的方法就可以了

SELECT 
    t2.AccountNr, t2.OfferNr
FROM 
    Table2 t2
WHERE
    EXISTS (
        SELECT Description 
        FROM Table1 t1
        WHERE 
          t1.Description LIKE ('%' + t2.AccountNr + '%') OR  
          t1.Description LIKE ('%' + t2.OfferNr + '%')
)

但这似乎不是一个很好的问题描述。你的实际产出是什么?你期望的产出是什么?这似乎不是很好的意思是什么?对于提供的数据,您的查询不应返回任何内容。您是否遇到错误?不,我缺少一些数据,例如,当我在子查询中仅使用OfferNr in where子句时,我得到的行在原始查询中不存在,但应该是,因为在“描述”字段中没有这样的行。为什么不更新您的问题并解释您拥有的内容、您得到的内容以及您想要的内容?这样,你就不会浪费任何人的时间。好吧,我已经更新了,但没有更多的补充。我想要的输出在我的问题中:我试图列出表2中没有AccountNr或offern的所有行。如果至少有一个,那么我不会列出它。
SELECT 
    t2.AccountNr, t2.OfferNr
FROM 
    Table2 t2
WHERE
    EXISTS (
        SELECT Description 
        FROM Table1 t1
        WHERE 
          t1.Description LIKE ('%' + t2.AccountNr + '%') OR  
          t1.Description LIKE ('%' + t2.OfferNr + '%')
)