现在数据库有v_sale_DTL , u_sale_dtl_sy两个表,v_sale_DTL是实时写入的最新数据,每天需要执行一个语句,把 u_sale_dtl_sy中没有的v_sale_DTL数据更新进来。应该怎么写?我附图只有几十行,实际数据库中有几千万行数据,每天要更新近万条数据,不可能把 u_sale_dtl_sy整个清空重新去v_sale_DTL取值,那样效率太低了,将近半小时。是否应该用no EXISTS,可我怎么写都不对,正确的写法应该是什么?
这个是考察你的not EXISTS 是否熟练掌握。
正确的语句如下:select * from v_sale_DTL a where not EXISTS (select saleno,rowid from u_sale_dtl_sy where saleno=a.saleno and rowid=a.rowid)
注意:
①第一:from那里定义了a表,not EXISTS 里面的from不需要再引用a表,条件里面可以直接使用a表。
②第二:not EXISTS 里面,需要哪些条件select哪些条件就行,和正常的select用法一模一样。写好以后,意思就是查询a表,除了这些数据以外。