如何进行左连接但有两个子句

时间:2014-02-28 02:09:06

标签: mysql sql laravel-4 query-builder

我有两个名为listingslistings_queue的表。它们的结构相同。我们的想法是将记录放入队列,对其进行处理,然后将它们移至listings

我想运行一个查询来提取listings但不存在listings_queue中的任何记录。不存在的标准是它没有与listings_queue中匹配的字段mls_listing_id和mls_id。

用简单的英语,“给我listings中没有listings_queue记录的任何记录与mls_id和mls_listing_id相同的记录。

我已经尝试过做where子句但无法让它工作。

1 个答案:

答案 0 :(得分:1)

以下是一种使用where子句执行此操作的方法:

select l.*
from listings l
where not exists (select 1
                  from listings_queue lq
                  where lq.mis_id = l.mis_id and lq.mis_listing_id = l.mis_listing_id
                 );

您也可以将此作为左外连接:

select l.*
from listings l left outer join
     listings_queue lq
     on lq.mis_id = l.mis_id and lq.mis_listing_id = l.mis_listing_id
where lq.mis_id is null;

如果listings_queue表有多个匹配项,则可能会产生重复。