查询出一个表比另外一个表多出的记录
with t1 as(select '1' id ,'test1' name, '1' codes from dualunion allselect '1' id ,'test1' name, '11' codes from dualunion allselect '2' id ,'test2' name, '2' codes from dualunion allselect '2' id ,'test2' name, '22' codes from dualunion allselect '3' id ,'test3' name, '3' codes from dual),t2 as(select '1' id ,'test1' name, '11' codes from dualunion allselect '1' id ,'test1' name, '111' codes from dualunion allselect '2' id ,'test2' name, '2' codes from dual)
SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE id=t1.id AND NAME=t1.NAME )AND codes NOT IN (SELECT DISTINCT codes FROM t2)或者SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE id=t1.id AND NAME=t1.NAME )MINUS SELECT * FROM t2
[解决办法]
select * from t1 where not exists (select 1 from t2 where t1.id=t2.id and t1.name= t2.name and t1.codes=t2.codes) and exists(select 1 from t2 where t1.id=t2.id and t1.name= t2.name);
[解决办法]
minus试试看