我有一个包含2个表的数据库。 table1 和 table2 。
表1 包含测试列表(“ 名称”列)。而且我想根据 table1 的测试列表来计算 table2 中缺少多少行(该表还有一列' name ')。强>。 所以我只想计算table1.name和table2.name之间的不匹配。
我尝试了几个查询,但是所有查询都没有真正起作用。 我试图使用' NOT IN '语句,但是这花费了太多时间。就像几分钟。
例如,输出应为:
COUNT(*)= 20
这意味着表2 中缺少20个测试(或尚未完成)。
我正在使用MySQL,所以不能使用 EXCEPT 或 MINUS 语句。
先谢谢您。
普通
答案 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