选择在MYSQL的其他表中不存在的值

时间:2020-02-24 15:59:04

标签: mysql sql select left-join

我希望能够在表1中选择没有提供或要求ID#1(jud)贷款的人。 我的2张桌子。

table 1
----------------------
id*|name|adress
1  |jud |pipi #5
2  |john|yoba #45
3  |jan |stackyflow 54
4  |Song|doesnt matter street 98

Table 2
-------------
*id|asked_loan|gave_loan
1  |1         |2
2  |1         |3

在这种情况下,我将只想获取Table1第4行:

4  |Song|doesnt matter street 98

我尝试过的事情:

SELECT DISTINCT `id`,`name`,`adress`
FROM `TABLE1`
LEFT JOIN `TABLE2` ON TABLE1.asked_loan = TABLE1.id
WHERE `asked_loan` !=1 AND `gave_loan` !=1

我的问题: 由于我没有加入,所以2个表挂在一起,因此不会出现在TABLE2中的用户不会出现。

摘要: 我希望能够选择未提供或获得(TABLE1 id)#1贷款的用户

2 个答案:

答案 0 :(得分:0)

您应该选择不匹配的行:

    SELECT DISTINCT  TABLE1.id,`name`,`adress` 
    FROM `TABLE1` 
    LEFT JOIN `TABLE2` ON TABLE2.asked_loan=TABLE1.id  
     AND  `asked_loan` !=1 
      AND `gave_loan` !=1
    WHERE  TABLE2.asked_loan is null

答案 1 :(得分:0)

一种选择是使用NOT EXISTS

SELECT *
  FROM table1 t1
 WHERE NOT EXISTS 
      (SELECT 0 
         FROM table2 t2 
        WHERE t1.ID IN (t2.asked_loan,t2.gave_loan) ) 

table2的这两列与ID的{​​{1}}列匹配

Demo