所以我有以下查询(见下文),我写了一个同事:SQL不在子查询中?
SELECT
t.tender_id as "Tender ID",
t.check_number as "Check Number",
t.check_type_id as "Check Type",
t.server_id as "Server ID",
t.cashier_id as "Cashier ID",
t.terminal_id as "Terminal ID",
t.tendered_date_time as "Tendered Date and Time",
t.tender_amount as "Tender Amount",
t.change_amount as "Change Amount",
g.account_name as "Account Name",
g.account_number as "Account Number"
FROM CheckTender AS t
INNER JOIN AcountActivity AS g
ON t.check_number = g.check_number
WHERE t.tender_id NOT in (5,14,4,9,15,16);
支票号码可以有多个tender_IDs。因此,例如,您可以为检查号码20001设置三行,所有这些行都有不同的tender_ID。
最初,他只是想要删除tender_id为5,14,4,9,15,16
的任何条目。但是后来我们发现我们需要修改哪些标准。
它需要更新,以便如果支票号码的投标ID为5,14,4,9,15,16
,该支票号码的所有实例都将被删除。我知道这很可能是一个子查询,但我一直在头脑中一直在打我的头,而没有弄清楚。 :(
http://explainextended.com/2009/09/15/not-in-vs-not-exists-vs-left-join -is-null-sql-server/ –
因此,找到属于这些投标ID的支票号码,并忽略这些支票号码。 – Kermit
@marc_s SQL Server 2000 – Oryx