mysql对面的查询连接

时间:2014-08-07 15:50:32

标签: mysql sql

我有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

3 个答案:

答案 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中没有相应的条目。