Mysql查询 - 选择两个表的两列之间的差异

时间:2018-04-10 23:33:19

标签: mysql select join

我有两张桌子:

TABLEA: ID :(自动增量) 名称:VARCHAR LAST_NAME:VARCHAR 国籍:VARCHAR

TABLEB: ID :(自动增量) 名称:VARCHAR LAST_NAME:VARCHAR 足球:队伍:VARCHAR

我想获得TableB中不存在的TableA.name和TableA.last_name的组合.... 我不知道怎么......我累了:(

4 个答案:

答案 0 :(得分:0)

试试这个:

select 
   concat(first_name, ' ', last_name) as full_name 
from TableA 
having full_name not in (
   select 
      concat(first_name, ' ', last_name) as full_name 
   from TableB
);

答案 1 :(得分:0)

简单的左连接就足够了。当您对名称和姓氏进行左连接并且B.name为空时,表示该记录在表A中找到,但不在表B中。

SELECT A.NAME, A.LAST_NAME
 FROM TABLEA A
 LEFT JOIN TABLEB B
 ON A.NAME = B.NAME AND A.LAST_NAME=B.LAST_NAME
 WHERE B.NAME is null and B.LAST_NAME is null;

答案 2 :(得分:0)

这也有效:

SELECT a.name, a.last_name 
FROM TableA a
WHERE NOT EXISTS (SELECT * FROM TableB b WHERE b.name=a.name AND b.last_name = a.last_name)

答案 3 :(得分:0)

使用以下给定的查询来获得所需的结果:

Select TABLEA.NAME, TABLEA.LAST_NAME 
from TABLEA 
INNER JOIN TABLEB 
ON TABLEA.NAME!=TABLEB.NAME AND TABLEA.LAST_NAME!=TABLEB.LAST_NAME;