2012-04-21 73 views
1

我们有两个表:从一个表中选择用户如果已经在其他

- 用户 -

id name borrower 
-- ------ -------- 
1 Peter 1 
2 John 1 
3 Mark 1 
4 David 0 

- 拆入 -

id from to amount 
-- ---- -- ------ 
1 1  2 100 

我需要输出使用者彼得未借出任何款项且借款人= 1(不包括彼得的结果),如下所示:

id name borrower 
-- ------ -------- 
3 Mark 1 

现在我坚持这个查询(不工作):

SELECT * 
FROM `users` u 
LEFT OUTER JOIN `lendings` l 
ON u.`id` = l.`from` 
WHERE l.`from` is null 
AND u.`id` != 1 
AND u.`borrower` = 1 

这是实际代码的简化的例子,以保持这个问题有用/可读为未来的读者。

相关问题:MySQL: select emails from one table only if not in another table?

回答

2

像这样的事情?

SELECT 
    * 
FROM 
    users 
WHERE 
    id NOT IN (SELECT 
      id 
     FROM 
      lendings) 
     AND borrower = 1; 

您可能想要使用不同的列名,因为我相信和使用mysql中的保留字。

+0

出现错误“操作数应该包含1列”,我编辑了您的查询,现在它工作的很好。好东西Lazerblade,谢谢! – 2012-04-21 01:15:03

相关问题