table_a:
table_b:
注意:1001里面的name是null
情景:
想要查询table_a中的name值没有在table_b中出现的记录
SELECT * FROM `test_id` where name not in(SELECT name from test_id_copy1)
结果:
因为null的关系,所以 not in不可取。
解决办法:
用not exists:
SELECT * FROM `test_id` where not EXISTS(SELECT * from test_id_copy1 where test_id_copy1.name = test_id.name);
结果:
情景2:
要查询table_a中的name值在table_b中出现了的记录
但是如果:SELECT * FROM `test_id` where name in(SELECT name from test_id_copy1);
的话,是没问题的:
用exists:
SELECT * FROM `test_id` where EXISTS(SELECT * from test_id_copy1 where test_id_copy1.name = test_id.name);
也可以。