我有两张桌子,结算和每周一次
我需要找到计费表中但不在每周表中的值,但我需要将其基于多个列。
我有一个只适用于一列的查询:
SELECT * from billing
outer apply
(select * from weekly where billing.[email]= weekly.[email])a
where a.[email] is null
有时在我的数据中,电子邮件可能会发生变化 所以我需要添加一些东西,如果电子邮件不匹配,检查名字和姓氏,但不知道如何做到这一点。
答案 0 :(得分:2)
您可以使用exists
运算符:
SELECT *
FROM billing
WHERE NOT EXISTS
(SELECT *
FROM weekly
WHERE billing.[email] = weekly.[email] OR
(billing.[firstName] = weekly.[firstName] AND
billing.[lastName] = weekly.[lastName]
)
)
答案 1 :(得分:0)
您可以使用NOT EXISTS
运算符根据电子邮件或名字和姓氏排除每周匹配的记录。
SELECT bl.*
FROM billing bl
WHERE NOT EXISTS (
SELECT 1
FROM weekly wk
WHERE (bl.[email] = wk.[email]
OR (
bl.firstName = wk.firstName
AND bl.lastName = wk.lastName))
AND bl.lenderName <> wk.lenderName --added this check
)