2014-10-31 68 views
0

我有一个查询,看起来像这样:查找不匹配的SQL语句

SELECT u_s_date, u_s_customer, u_s_product_name, u_f_quantity FROM updated 
JOIN accounts ON `name` = u_s_customer 
WHERE deleted = 0; 

这份名单的比较表中的所谓的400产品订单updated。我加入到accounts表中,因为updated表中的所有客户名都不在accounts表中。所以这个名单从400到大约300个名字。

我需要的是现在制作100行的另一个列表,其中包括而不是

我尝试了类似JOIN accounts ON `name` <> u_s_customer的东西,那显然没有奏效。我不擅长子查询和条件,恐怕这是唯一的方法。

有人可以给我一些帮助吗?

回答

3

EXISTS操作

SELECT * 
FROM updated u 
WHERE NOT EXISTS (SELECT 1 
        FROM accounts 
        WHERE `name` = u_s_customer) 

LEFT JOIN

SELECT * 
FROM updated LEFT JOIN accounts 
ON `name` = u_s_customer 
WHERE name IS NULL 

NOT IN

SELECT * 
FROM updated 
WHERE name NOT IN (SELECT u_s_customer 
        FROM accounts) 
+0

我倾向于使用LEFT JOIN方法最frequen TLY。它倾向于表现最好。 – Sonny 2014-10-31 20:15:58

+0

LEFT JOIN是我的第一选择,我应该在上面说明,但由于没有空值,所以没有工作。我认为EXISTS会完成这项工作! – KickingLettuce 2014-10-31 20:16:30

+0

对于这种查询,我会使用NOT EXISTS运算符。 – 2014-10-31 20:16:49