计算来自2个不同表的2行之间的不匹配-MySQL

时间:2018-08-08 09:40:51

标签: mysql sql database

我有一个包含2个表的数据库。 table1 table2

表1 包含测试列表(“ 名称”列)。而且我想根据 table1 的测试列表来计算 table2 中缺少多少行(该表还有一列' name ')。强>。 所以我只想计算table1.name和table2.name之间的不匹配。

我尝试了几个查询,但是所有查询都没有真正起作用。 我试图使用' NOT IN '语句,但是这花费了太多时间。就像几分钟。

例如,输出应为:

  

COUNT(*)= 20

这意味着表2 中缺少20个测试(或尚未完成)。

我正在使用MySQL,所以不能使用 EXCEPT MINUS 语句。

先谢谢您。

普通

3 个答案:

答案 0 :(得分:1)

您可以使用not exists

select count(*)
from table1 t1
where not exists (select 1 from table2 t2 where t2.name = t1.name);

如果您在name中有一个重复的table1,则需要count(distinct t1.name)

答案 1 :(得分:0)

请尝试以下查询:

select count(case when bname is null then 1 end)
from
(
select a.name as aname, b.name as bname from 
table1 a left join table2 b
on a.name=b.name)x

答案 2 :(得分:0)

MINUS可以在MySQL中使用。 参考:http://www.mysqltutorial.org/mysql-minus/

尝试一下:

SELECT name
FROM table1
MINUS
SELECT name
FROM table2