我使用的是Oracle,我有一个查询:有2子查询的问题SELECT
SELECT count(*) FROM table1;
会抛出我作为结果21932
,那么我以前设置查询作为子查询中的下一个方法:
SELECT count(*) FROM table2 WHERE attr1 IN (SELECT attr1 FROM table1);
这会引起我的结果10489
。所以,我想删除不在此组内的行,其余运行DELETE
句话之前,我想检查行的这个数字是正确的,下一个查询:
SELECT count(*) FROM table1 WHERE attr1 NOT IN
(SELECT attr1 FROM table2 WHERE attr1 IN (SELECT attr1 FROM table1));
行的数目应该是11443 (total - 10489)
,但声明抛出我3743
行,为什么这是结果?我怎么能得到我想要删除的行数?
在此先感谢。
您说得对,'attr1'在这两个表 –
Hm中都是唯一的,而且mathguy关于NULL的猜测也不适用? 'count(*)','count(attr1)'和'count(distinct attr1)'给每个表相同的数字? –
对不起''attr1'在两个表中都不是唯一的,只在'table2'中,而不在'table1'中,我可以注意到运行这个语句'count(distinct attr1)'。 –