Sql 检查另一列中是否存在两列中的任何一列
我在表2中有两列T2,在表1中有一列T1。示例数据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
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 + '%')
)