我有2张桌子。第2表2 PK从第1表引用为2FK,也是2 PK。我想提取不匹配的记录?
以下查询匹配与这两个键匹配的记录。这返回3828行。我该如何做相反的>
SELECT *
FROM hdb.addressesconsultants a
join orderconsultants o where a.CONSULTANT = o.CONSULTANT and a.ORDERNO = o.ORDERNO
下面的返回3837行。
SELECT * FROM hdb.addressesconsultants a
@ munguea05
这就是我所追求的,它返回了9行,这是差异,但是我在orderconsultants
中有4044行如何解决这个问题,或者抓住与addressconsultants
不匹配的行orderconsutlants
?
如何删除这些行?
SELECT o.*
FROM hdb.orderconsultants o
LEFT OUTER JOIN addressesconsultants a
ON a.CONSULTANT = o.CONSULTANT AND a.OrderNo = o.OrderNo
WHERE a.CONSULTANT is NULL and a.OrderNo is NULL
答案 0 :(得分:2)
你想要没有订单的人吗? 使用左连接并仅考虑左连接表
上具有NULL的连接SELECT *
FROM hdb.addressesconsultants a
LEFT JOIN orderconsultants o
ON a.CONSULTANT = o.CONSULTANT and a.ORDERNO = o.ORDERNO
WHERE
o.CONSULTANT IS NULL
答案 1 :(得分:2)
这取决于您是希望只有一个表的结果不匹配,还是两个表不匹配的结果。
这给你一个,如果你需要两者的结果只是反过来。
SELECT *
FROM hdb.addressesconsultants a (NOLOCK)
LEFT OUTER JOIN orderconsultants o (NOLOCK)
ON A.consultant = o.Consultant AND a.OrderNo = o.OrderNo
WHERE o.Consultant is NULL and O.OrderNo is NULL
答案 2 :(得分:0)
SELECT a.*
FROM hdb.addressesconsultants a
left join orderconsultants o where a.CONSULTANT = o.CONSULTANT and a.ORDERNO = o.ORDERNO
where o.CONSULTANT is null
这将显示在地址顾问中有条目的任何条目,但在orderconsultants中没有相应的条目。