日期:2014-05-17  浏览次数:20377 次

sql 查询问题 很复杂
我有一个表,其中数据有几百万,我要把这个表的数据6万6万的导出到excel,我要怎么查询才能刚刚好查询到6万。 效果是复制过的就不要查询了那种。

------解决方案--------------------
前提最好是你的表有一个自增ID,这样按照ID来查询并导出
------解决方案--------------------
需要考虑效率吗?
------解决方案--------------------
你看以下简单思路否可行

--建一张临时表 如:
--VID 是int型主键
select top 0 VID into #tb from table

---重复以下,直到数据导完
---begin---
select top 60000 VID,VName,... from table where table.VID not in (select #tb.VID from #tb) order by VID

insert into #tb (VID) select top 60000 VID from table where table.VID not in (select #tb.VID from #tb) order by VID

---end------

------解决方案--------------------
这个跟分页查询差不多吧?
------解决方案--------------------
既然数据那么庞大,那每次选完之后就把已选的删除掉,或许效率会高些?
先全选数据放入临时表,或者视图中,select top(60000) from table ,然后delete top(60000)from table
对于大数据,这样或许可行吧?
------解决方案--------------------
一种是临时给表增加一个自增字段,int类型,然后写代码,循环,每次读取6万条到EXCEL。
另外一种就是每次读6万条后,删除源表中已经成功导出到EXCEL的记录,前提是该表无所谓保留不保留。