首先要理解minus的意思,假设结果集A和B ,如果A minus B 那么显示的结果是所有在A中而不在B中的记录。 你所写的的是两个结果集:table1的所有记录,table2的所有记录。这样count的结果是难以估量的,你说刚好是table2的数量,估计是碰巧了。单纯的这样好像是没什么意思的,应该加上几个特定的列才有意义。
Minus的作用于Union作用相反,取第一个结果集与第二个结果集的差集,两个结果集必须字段个数相等,类型相同。 例table1与table2结构相同,存在table1而不存在table2的记录 : select * from table1 minus select * from table2 Minus的效率比Not in要高的多,尤其是数据量大的时候。如查出尚未收费的发货单: 语句一:select billno from t_bussiness Minus select billno from t_Money where ifmoney = 'Y' 语句二:select billno from t_bussiness Not in (select billno from t_Money where ifmoney = 'Y')虽然Minus效率较高,但not in 更加灵活,无需考虑两个结果集字段匹配的问题,需要显示什么字段都可以。
你所写的的是两个结果集:table1的所有记录,table2的所有记录。这样count的结果是难以估量的,你说刚好是table2的数量,估计是碰巧了。单纯的这样好像是没什么意思的,应该加上几个特定的列才有意义。
例table1与table2结构相同,存在table1而不存在table2的记录 :
select * from table1
minus
select * from table2 Minus的效率比Not in要高的多,尤其是数据量大的时候。如查出尚未收费的发货单:
语句一:select billno from t_bussiness
Minus
select billno from t_Money where ifmoney = 'Y'
语句二:select billno from t_bussiness
Not in (select billno from t_Money where ifmoney = 'Y')虽然Minus效率较高,但not in 更加灵活,无需考虑两个结果集字段匹配的问题,需要显示什么字段都可以。