MySQL如何知道哪一行不匹配?

时间:2014-09-15 00:34:55

标签: mysql

 General table 1
 name      |   A  |    B |      C |      D
 ----------+------+------+--------+--------
 Tom       |    0 |    1 |      1 |      0
 Jerry     |    1 |    1 |      0 |      0
 Daffy     |    1 |    1 |      0 |      0
 Bunny     |    1 |    1 |      0 |      0
 Tweety    |    1 |    1 |      0 |      0

 Table A
 name
 Jerry
 Daffy
 Bunny
 Tweety

我有4个表A,B,C和D.当表A中的名称与表1中的名称匹配时,我为每列设置了A = 1等列。

我在表A中有8000个名字,当我运行查询来更新表1时,似乎缺少一个名称,它返回7999行匹配。有没有办法在2个表之间找到缺少的名称?

 UPDATE  table1 t1 
 JOIN    A t2 ON t1.name = t2.name
 SET     t1.A = 1;

我试图用以下内容找到缺少的名称,

 SELECT t2.name
 FROM A t2
 LEFT JOIN table1 t1
 ON t1.name = t2.name
 WHERE t1.name IS NULL;

但它返回空集。

1 个答案:

答案 0 :(得分:1)

左连接会给你缺少的名字

Select t2.name
From A t2
Left join table1 t1
On t1.name = t2.name
Where t1.name is NULL