如何取表中间某个范围的数据

昨天工作需要生成了200多W行的数据,其实就是递增生成的,前面的文章有写过。这次范围不是连续的,比如电话号码段,可能是12340000-12350000,另一个范围就是22340000-22349999。一共200多个段,很2B的做法,手动分开连续的和不连续,然后使用之前的语句生成号码。我不会告诉你,我就是用这2B的做法的;但我可以告诉你后面有更2B的。

一共放了70多个excel工作表。结果要放到三个工作表里。只好在数据库中union
all起来,再copy到excel工作表里,但excel一个工作表又不能放下200多W行,最多大概是104W多,这就是前面为什么要放三个工作表里的原因。

那如何用SQL生成分三部分呢?select top,是的!top只是放第一个工作表,第二第三呢?

SourceTable就一个字段,字段1

第一个语句:select top 1000000 * from  SourceTable;

第二个语句:

select top 2000000 * from SourceTable

except

select top 1000000 * from SourceTable

这个语句正确吗?“堆数据表是没有聚集索引的表。即数据行不按任何特殊的顺序存储,数据页也没有任何特殊的顺序”。改为下面的:

select * from

(select top 2000000 * from SourceTable order by 1)

except

select * from

(select top 1000000 * from SourceTable order by 1)

第三个语句:

select * from

(select top 总行数 * from SourceTable 
order by 1)

except

select * from

(select top 2000000 * from SourceTable order by 1)

是不是很2啊,期间我还试过更2的,分享出来

select * from (select * from
SourceTable order by 1)

幸好这个语句有报错,再重看那语句,自己都笑了。

正是因为这里用到except,所以上一篇才写except的去不去重复的问题。

关于从某表中取中间某些行的话题先放下;在返回到生成电话号码那话题

生成号码都可以用循环,有多少号码段为毛不能用循环啊?

1.把号码段导入数据库,HD;添加序号

select ROW_NUMBER() over (order by 号段) as xuhao, 号段 into HDU from HD;

2.循环中嵌套循环就OK了

declare @n numeric(8,0);
declare @i int;
set @i=1;
while (@i<=5)
begin
set @n = (select cast(号段+‘0000‘ as numeric) from hdU where [email protected]);
while (@n <= (select cast(号段+‘9999‘ as numeric) from hdU where [email protected]))
begin
insert into Haoma select @n
set @n = @n+1
end
set @[email protected]+1
end
go
试了5个号段是没问题的。
就加一个xuhao的字段就方便多了,干嘛不用identity?非得用ROW_NUMBER()?
思维啊,这些天老是想窗口函数了。其实identity也是可以的。
今天和老大说关于取表中间行的问题,老大直接来了句,你加个id的字段就好了。对啊,取前多少行和中间多少行,在where条件里判断ID的范围就好了。恍然大悟啊,上面的identity替换窗口函数也是受这个影响。
 
思维啊!!!

时间: 2024-10-21 00:40:20

如何取表中间某个范围的数据的相关文章

在oracle,mysql,sqlserver中,对要求取表的行数的语法格式

在oracle中如果我们要求取表的前几行,用关键字rownum 例: select * from student where rownum<=10 得出的结果是取出student表中的前10行 在mysql中,用关键字limit 例:select * from student limit 10 得出的结果是取出前10行数据 或    select * from student limit 1,2 表示从第一行后的两行数据,即取出的是第二行与第三行数据 在sqlserver中,用关键字top 例:

抓取&ldquo;矢量&rdquo;的实时交通流量数据

1. 引言 最近老师有一个需求,就是想要抓取实时的矢量交通流量数据来做分析,类似于百度地图,高德地图的"实时路况"那种.平时的网络抓取工作一般是抓取网页上现成的数据,但是交通流量数据只有栅格的切片,没有矢量数据,而且数据购买的费用一年就好几十W,基本不可能拿得出.实验室的师兄们都有事情忙,所以这个苦逼的任务自然摊派到我的头上. 图1. 高德和百度地图的实时路况数据 因为网络上现成的数据只有切片数据,因此这个问题就转化为了如何将切片数据矢量化.如果直接用ArcGIS Engine将栅格数

如何爬取京东手机上万的商品数据,这个神器可以帮你

Charles是一个网络抓包工具,我们可以用它来做App的抓包分析,得到App运行过程中发生的所有网络请求和响应内容,这就和Web端浏览器的开发者工具Network部分看到的结果一致. 相比Fiddler来说,Charles的功能更强大,而且跨平台支持更好.所以我们选用Charles作为主要的移动端抓包工具,用于分析移动App的数据包,辅助完成App数据抓取工作. 一.本节目标 本节我们以京东App为例,通过Charles抓取App运行过程中的网络数据包,然后查看具体的Request和Respo

爬取链家任意城市租房数据(北京朝阳)

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time : 2019-08-16 15:56 4 # @Author : Anthony 5 # @Email : [email protected] 6 # @File : 爬取链家任意城市租房数据.py 7 8 9 import requests 10 from lxml import etree 11 import time 12 import xlrd 13 import os

爬取链家任意城市二手房数据(天津)

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time : 2019-08-16 12:40 4 # @Author : Anthony 5 # @Email : [email protected] 6 # @File : 爬取链家任意城市二手房数据.py 7 8 9 import requests 10 from lxml import etree 11 import time 12 import xlrd 13 import o

分表后 快速查询所有数据

MERGE存储引擎把一组MyISAM数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询.构成一个MERGE数据表结构的各成员MyISAM数据表必须具有完全一样的结构.每一个成员数据表的数据列必须按照同样的顺序定义同样的名字和类型,索引也必须按照同样的顺序和同样的方式定义. 假设你有几个日志数据表,他们内容分别是这几年来每一年的日志记录项,他们的定义都是下面这样,YY代表年份: [sql] view plain copy CREATE TABLE log_YY ( dt  DATETIME

【表空间支持的最大数据文件大小的算法】【数据库限制】【数据文件文件头保留数据块数】

本地管理表空间中设置不同大小的db_block_size时数据文件头保留空间相应例如以下:--?? db_block_size=2KB,文件头保留32个数据块,即64KB. db_block_size=4KB.文件头保留16个数据块,即64KB. db_block_size=8KB,文件头保留8个数据块,即64KB. db_block_size=16KB,文件头保留4个数据块.即64KB. db_block_size=32KB,文件头保留4个数据块.即128KB. --为什么不是64kb? 默认

mysql高效获取两张表共同字段的交集数据

问题: 例如下面两站表A,B.A表和B表分别有5-10w数据.A表结构如下:id bid name title publisher extraB表结构如下id bid name title publisher A出版社也为很多人出版了书籍,B出版社也为很多人出版了书籍,有sql语句找出这两个出版社为那些人 共同出版书籍,用innerjoin太慢,有没有什么更好的办法? 解答一: 由于不知道你表的索引情况,至于用join还是in和exists不太好说,理论上讲,exists最快.in次之.join

[python]初试页面抓取——抓取沪深股市交易龙虎榜数据

[python]抓取沪深股市交易龙虎榜数据 python 3.5.0下运行 没做自动建立files文件夹,需要手动在py文件目录下建立files文件夹后运行 #coding=utf-8 import gzipimport http.cookiejar import urllib.request import urllib.parse import json import os import time import datetime def getOpener(head): # deal with