我在Table2(T2)中有两列,在Table1(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"
如您所见,Table1中的列描述有时包含Table2中的所有两列,有时只包含一列。 我正在尝试列出Table2中的所有行,其中说明中没有AccountNr或OfferNr。 如果至少有一个,那么我就不会列出它。
我尝试的是:
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 + '%')
)
但它似乎丢失数据,例如,如果我在子查询中的where子句中仅使用OfferNr,那么我将获得原始查询中不存在的行,但应该是。
答案 0 :(得分:1)
如果您希望来自Table1
的所有记录Table2
中既没有 AccountNr 也没有 OfferNr ,那么以下内容将有效。 顺便说一下,这与你的相同!
SELECT
t2.AccountNr, t2.OfferNr
FROM
Table2 t2
WHERE
NOT EXISTS (
SELECT Description
FROM Table1 t1
WHERE
t1.Description LIKE ('%' + t2.AccountNr + '%') OR
t1.Description LIKE ('%' + t2.OfferNr + '%')
)
但是,如果您想要Table1
的所有记录 AccountNr , OfferNr 或两者,在Table2
中,以下内容将有效。
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 + '%')
)