怎么能让前n位相同的数据只取前三个

解决方案 »

  1.   

    贴建表及插入记录的SQL,及要求结果出来看看
      

  2.   

    mysql 前几位相同为一组 分组查询 每组只取三位
      

  3.   

    ipstart ipend ip_area
    1031863420 1031863551 重庆信息工程专修学院校园网
    1031863410 1031863417 重庆信息工程专修学院校园网
    1031863408 1031863408 重庆信息工程专修学院校园网
    1038866306 1038866306 重庆信息工程专修学院校园网
    3546471078 3546471078 重庆信息工程专修学院校园网
    1031863397 1031863397 重庆信息工程专修学院生活区影剧院2楼网吧
    1031863403 1031863403 重庆信息工程专修学院生活区影剧1楼网吧
    1031863406 1031863406 重庆信息工程专修学院生活区威威网吧
    1031863401 1031863401 重庆信息工程专修学院生活区电子阅览室
    1031863418 1031863418 重庆信息工程专修学院生活区电子阅览室
    1031863398 1031863398 重庆信息工程专修学院教学区体育馆网吧
    1031863407 1031863407 重庆信息工程专修学院教学区计算机中心机房
    1031863419 1031863419 重庆信息工程专修学院教学区电子阅览室
    1031863409 1031863409 重庆信息工程专修学院教学区博力网吧
    1031863400 1031863400 重庆信息工程专修学院教学区30幢楼下网吧
    3736209596 3736209596 重庆市自由点网吧
    1035656629 1035656629 重庆市紫逸网城
    1035641121 1035641121 重庆市珠江集团(杨家坪直港大道)
    3684253192 3684253199 重庆市重邮信科公司
    1033978626 1033978626 重庆市重庆邮电大学移通学院(第二教学部)
    3402244096 3402248191 重庆市重庆邮电大学
    3545485312 3545489407 重庆市重庆邮电大学
    3670614276 3670614280 重庆市重庆移动陈家坪IDC中心
    1031840155 1031840155 重庆市重庆医科大学基础医学院
    1031840128 1031840154 重庆市重庆医科大学
    1031840156 1031840159 重庆市重庆医科大学
    3402268672 3402272767 重庆市重庆医科大学
    3658824209 3658824211 重庆市重庆信息技术职业学院金龙校区
    3736298504 3736298512 重庆市重庆信息工程专修学院
    3736293558 3736293558 重庆市重庆信息工程专修学院
    3736354641 3736354815 重庆市重庆信息工程专修学院
    1033979740 1033979741 重庆市重庆信息工程专修学院
    1033979723 1033979723 重庆市重庆信息工程专修学院
    1033980134 1033980134 重庆市重庆信息工程专修学院
    3708245173 3708245173 重庆市重庆物流学校
    3662064514 3662064514 重庆市重庆文理学院
    3670192128 3670196223 重庆市重庆文理学院
    3737559040 3737563135 重庆市重庆文理学院
    3546035424 3546035425 重庆市重庆文理学院
    3736200498 3736200498 重庆市重庆通信学院
    1035647485 1035647485 重庆市重庆数字证书认证中心
    3662073688 3662073688 重庆市重庆市劳动和社会保障局
    3550354182 3550354182 重庆市重庆师范学院计算机中心
    2033255424 2033255679 重庆市重庆师范大学涉外商贸学院
    2019459072 2019460095 重庆市重庆师范大学和风苑B栋
    3736386673 3736386684 重庆市重庆师范大学(大学城校区)
    3737518080 3737522175 重庆市重庆师范大学
    3550350092 3550350094 重庆市重庆师范大学
    3550179954 3550179954 重庆市重庆师范大学
    3688693760 3688697855 重庆市重庆师范大学
      

  4.   

    SELECT * FROM 表名 WHERE (SELECT COUNT(1) FROM 表名 重定义表名 WHERE 表名.要相同的字段=重定义表名.要相同的字段 AND 表名.id>重定义表名.id)<3
      

  5.   

    如果是只取一个  可能会快一些select substring(ip_area,1,N),ipstart,ipend
    from tb
    gropp by substring(ip_area,1,N)
      

  6.   

    读取一个?我是要分地点读取的。
    SELECT startip, endip FROM IP WHERE COUNTRY LIKE '广东%';
      

  7.   

    贴建表及插入记录的SQL,及要求结果出来看看
      

  8.   


    create table
    CREATE TABLE `ip` (
       `startip` varchar(16) default NULL,
       `endip` varchar(16) default NULL,
       `country` varchar(100) default NULL,
       `local` varchar(20) default NULL,
       `startid` bigint(24) default NULL,
       `endid` bigint(24) default NULL,
       KEY `endid` (`endid`),
       KEY `startid` (`startid`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8
      

  9.   

    startip endip country local startid endid
    3.0.0.0 3.255.255.255 美国 新泽西通用电气公司 \N 50331648 67108864
    4.0.0.0 4.10.255.255 美国  9xz.net \N 67108864 67829760
    4.11.0.0 4.11.255.255 美国 夏威夷 \N 67829760 67895296
    4.12.0.0 4.19.77.255 美国  9xz.net \N 67895296 68374016
    4.19.78.0 4.19.78.255 美国 西南政法大学 \N 68374016 68374272
    4.19.79.0 4.19.79.63 美国 Armed Forces Radio/Television \N 68374272 68374336
    4.19.79.64 4.21.177.111 美国  9xz.net \N 68374336 68530544
    4.21.177.112 4.21.177.127 美国 Kraft Group \N 68530544 68530560
    4.21.177.128 4.21.177.255 美国 南新汉普郡学院 \N 68530560 68530688
    4.21.178.0 4.36.124.127 美国  9xz.net \N 68530688 69500032
    4.36.124.128 4.36.124.255 美国 Technical Resource Connections Inc 69500032 69500160
    4.36.125.0 4.36.127.255 美国 坦帕大学 \N 69500160 69500928
    4.36.128.0 4.37.215.255 美国  9xz.net \N 69500928 69588992
    4.37.216.0 4.37.219.255 美国 德克萨斯女子大学 \N 69588992 69590016
    4.37.220.0 4.41.60.255 美国  9xz.net \N 69590016 69811456
    4.41.61.0 4.41.61.255 美国 EARTHLINK公司 \N 69811456 69811712
    4.41.62.0 4.43.68.255 美国  9xz.net \N 69811712 69944576
    4.43.69.0 4.43.69.95 美国 罗斯门特学院 \N 69944576 69944672
    4.43.69.96 4.208.48.255 美国 Genuity用户 \N 69944672 80752896
    4.208.49.0 4.208.49.255 美国 加洲 \N 80752896 80753152
    4.208.50.0 4.237.255.255 美国 Genuity用户 \N 80753152 82706432
    4.238.0.0 4.239.255.255 美国 宾夕法尼亚州 \N 82706432 82837504
    4.240.0.0 4.255.255.255 美国 Genuity用户 \N 82837504 83886080
    5.0.0.0 5.255.255.255 IANA  9xz.net \N 83886080 100663296
    6.0.0.0 8.255.255.255 美国 DoD网络信息中心 \N 100663296 150994944
    9.0.0.0 9.255.255.255 美国 纽约IBM公司 \N 150994944 167772160
    10.0.0.0 10.255.255.255 局域网 对方和您在同一内部网 \N 167772160 184549376
    11.0.0.0 11.255.255.255 美国 DoD网络信息中心 \N 184549376 201326592
    12.0.0.0 12.0.47.255 美国 ATT用户 \N 201326592 201338880
    12.0.48.0 12.0.63.255 美国 哈佛大学 \N 201338880 201342976
    12.0.64.0 12.2.168.255 美国 ATT用户 \N 201342976 201500928
    12.2.169.0 12.2.169.255 美国 Leepfrog Technologies \N 201500928 201501184
    12.2.170.0 12.3.133.255 美国 ATT用户 \N 201501184 201557504
    12.3.134.0 12.3.135.255 美国 Lycoming College \N 201557504 201558016
    12.3.136.0 12.5.176.239 美国 ATT用户 \N 201558016 201699568
    12.5.176.240 12.5.176.255 美国 Friends University \N 201699568 201699584
    12.5.177.0 12.6.207.255 美国 ATT用户 \N 201699584 201773056
    12.6.208.0 12.6.223.255 美国 哈佛大学 \N 201773056 201777152
    12.6.224.0 12.6.229.255 美国 ATT用户 \N 201777152 201778688
    12.6.230.0 12.6.231.255 美国 Marlboro College \N 201778688 201779200
    12.6.232.0 12.11.138.255 美国 ATT用户 \N 201779200 202083072
    12.11.139.0 12.11.139.255 美国 南佛蒙特学院 \N 202083072 202083328
    12.11.140.0 12.13.176.127 美国 ATT用户 \N 202083328 202223744
    12.13.176.128 12.13.176.255 美国 Spelman College \N 202223744 202223872
    12.13.177.0 12.16.215.255 美国 ATT用户 \N 202223872 202430464
    12.16.216.0 12.16.219.255 美国 太平洋联合学院 \N 202430464 202431488
    12.16.220.0 12.19.229.255 美国 ATT用户 \N 202431488 202630656
    12.19.230.0 12.19.230.255 美国 Houghton College \N 202630656 202630912
    12.19.231.0 12.22.84.255 美国 ATT用户 \N 202630912 202790144
    12.22.85.0 12.22.85.255 美国 新泽西 \N 202790144 202790400
      

  10.   

    参考下贴中的多种方法http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
    [征集]分组取最大N条记录方法征集,及散分....
      

  11.   


       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  12.   

    好的,我用的是mysql,建表语句我已经贴了~~
      

  13.   

    INSERT INTO `ip` VALUES ('3.0.0.0', '3.255.255.255', '美国 新泽西通用电气公司', null, '50331648', '67108864');
    INSERT INTO `ip` VALUES ('4.0.0.0', '4.10.255.255', '美国  9xz.net', null, '67108864', '67829760');
    INSERT INTO `ip` VALUES ('4.11.0.0', '4.11.255.255', '美国 夏威夷', null, '67829760', '67895296');
    INSERT INTO `ip` VALUES ('4.12.0.0', '4.19.77.255', '美国  9xz.net', null, '67895296', '68374016');
    INSERT INTO `ip` VALUES ('4.19.78.0', '4.19.78.255', '美国 西南政法大学', null, '68374016', '68374272');
    INSERT INTO `ip` VALUES ('4.19.79.0', '4.19.79.63', '美国 Armed Forces Radio/Television', null, '68374272', '68374336');
    INSERT INTO `ip` VALUES ('4.19.79.64', '4.21.177.111', '美国  9xz.net', null, '68374336', '68530544');
    INSERT INTO `ip` VALUES ('4.21.177.112', '4.21.177.127', '美国 Kraft Group', null, '68530544', '68530560');
    INSERT INTO `ip` VALUES ('4.21.177.128', '4.21.177.255', '美国 南新汉普郡学院', null, '68530560', '68530688');
    INSERT INTO `ip` VALUES ('4.21.178.0', '4.36.124.127', '美国  9xz.net', null, '68530688', '69500032');
    INSERT INTO `ip` VALUES ('4.36.124.128', '4.36.124.255', '美国 Technical Resource Connections', 'Inc', '69500032', '69500160');
    INSERT INTO `ip` VALUES ('4.36.125.0', '4.36.127.255', '美国 坦帕大学', null, '69500160', '69500928');
    INSERT INTO `ip` VALUES ('4.36.128.0', '4.37.215.255', '美国  9xz.net', null, '69500928', '69588992');
    INSERT INTO `ip` VALUES ('4.37.216.0', '4.37.219.255', '美国 德克萨斯女子大学', null, '69588992', '69590016');
    INSERT INTO `ip` VALUES ('4.37.220.0', '4.41.60.255', '美国  9xz.net', null, '69590016', '69811456');
    INSERT INTO `ip` VALUES ('4.41.61.0', '4.41.61.255', '美国 EARTHLINK公司', null, '69811456', '69811712');
    INSERT INTO `ip` VALUES ('4.41.62.0', '4.43.68.255', '美国  9xz.net', null, '69811712', '69944576');
    INSERT INTO `ip` VALUES ('4.43.69.0', '4.43.69.95', '美国 罗斯门特学院', null, '69944576', '69944672');
    INSERT INTO `ip` VALUES ('4.43.69.96', '4.208.48.255', '美国 Genuity用户', null, '69944672', '80752896');
    INSERT INTO `ip` VALUES ('4.208.49.0', '4.208.49.255', '美国 加洲', null, '80752896', '80753152');
    INSERT INTO `ip` VALUES ('4.208.50.0', '4.237.255.255', '美国 Genuity用户', null, '80753152', '82706432');
    INSERT INTO `ip` VALUES ('4.238.0.0', '4.239.255.255', '美国 宾夕法尼亚州', null, '82706432', '82837504');
      

  14.   

    希望的结果就是前三位相同的ip ,比如255.225.255.255和255.255.255.254等等,只取三个就可以了.j就是ip量有很大,前三位相同的有很多
      

  15.   

    基于这个测试数据 你期望的正确结果什么样?以哪个IP为准? 建议一次性把问题描述清楚。
    mysql> select * from ip;
    +--------------+---------------+-------------------------------------+-------+----------+----------+
    | startip      | endip         | country                             | local | startid  | endid    |
    +--------------+---------------+-------------------------------------+-------+----------+----------+
    | 3.0.0.0      | 3.255.255.255 | 美国 新泽西通用电气公司             | NULL  | 50331648 | 67108864 |
    | 4.0.0.0      | 4.10.255.255  | 美国  9xz.net                       | NULL  | 67108864 | 67829760 |
    | 4.11.0.0     | 4.11.255.255  | 美国 夏威夷                         | NULL  | 67829760 | 67895296 |
    | 4.12.0.0     | 4.19.77.255   | 美国  9xz.net                       | NULL  | 67895296 | 68374016 |
    | 4.19.78.0    | 4.19.78.255   | 美国 西南政法大学                   | NULL  | 68374016 | 68374272 |
    | 4.19.79.0    | 4.19.79.63    | 美国 Armed Forces Radio/Television  | NULL  | 68374272 | 68374336 |
    | 4.19.79.64   | 4.21.177.111  | 美国  9xz.net                       | NULL  | 68374336 | 68530544 |
    | 4.21.177.112 | 4.21.177.127  | 美国 Kraft Group                    | NULL  | 68530544 | 68530560 |
    | 4.21.177.128 | 4.21.177.255  | 美国 南新汉普郡学院                 | NULL  | 68530560 | 68530688 |
    | 4.21.178.0   | 4.36.124.127  | 美国  9xz.net                       | NULL  | 68530688 | 69500032 |
    | 4.36.124.128 | 4.36.124.255  | 美国 Technical Resource Connections | Inc   | 69500032 | 69500160 |
    | 4.36.125.0   | 4.36.127.255  | 美国 坦帕大学                       | NULL  | 69500160 | 69500928 |
    | 4.36.128.0   | 4.37.215.255  | 美国  9xz.net                       | NULL  | 69500928 | 69588992 |
    | 4.37.216.0   | 4.37.219.255  | 美国 德克萨斯女子大学               | NULL  | 69588992 | 69590016 |
    | 4.37.220.0   | 4.41.60.255   | 美国  9xz.net                       | NULL  | 69590016 | 69811456 |
    | 4.41.61.0    | 4.41.61.255   | 美国 EARTHLINK公司                  | NULL  | 69811456 | 69811712 |
    | 4.41.62.0    | 4.43.68.255   | 美国  9xz.net                       | NULL  | 69811712 | 69944576 |
    | 4.43.69.0    | 4.43.69.95    | 美国 罗斯门特学院                   | NULL  | 69944576 | 69944672 |
    | 4.43.69.96   | 4.208.48.255  | 美国 Genuity用户                    | NULL  | 69944672 | 80752896 |
    | 4.208.49.0   | 4.208.49.255  | 美国 加洲                           | NULL  | 80752896 | 80753152 |
    | 4.208.50.0   | 4.237.255.255 | 美国 Genuity用户                    | NULL  | 80753152 | 82706432 |
    | 4.238.0.0    | 4.239.255.255 | 美国 宾夕法尼亚州                   | NULL  | 82706432 | 82837504 |
    +--------------+---------------+-------------------------------------+-------+----------+----------+
    22 rows in set (0.00 sec)mysql>
      

  16.   

    希望以下是你要的结果,否则真是浪费时间。
    mysql> select *
        -> from ip i
        -> where 3>(select count(*) from ip where substring_index(endip,'.',3)=substring_index(i.endip,'.',3) and startid<i.startid);
    +--------------+---------------+-------------------------------------+-------+----------+----------+
    | startip      | endip         | country                             | local | startid  | endid    |
    +--------------+---------------+-------------------------------------+-------+----------+----------+
    | 3.0.0.0      | 3.255.255.255 | 美国 新泽西通用电气公司             | NULL  | 50331648 | 67108864 |
    | 4.0.0.0      | 4.10.255.255  | 美国  9xz.net                       | NULL  | 67108864 | 67829760 |
    | 4.11.0.0     | 4.11.255.255  | 美国 夏威夷                         | NULL  | 67829760 | 67895296 |
    | 4.12.0.0     | 4.19.77.255   | 美国  9xz.net                       | NULL  | 67895296 | 68374016 |
    | 4.19.78.0    | 4.19.78.255   | 美国 西南政法大学                   | NULL  | 68374016 | 68374272 |
    | 4.19.79.0    | 4.19.79.63    | 美国 Armed Forces Radio/Television  | NULL  | 68374272 | 68374336 |
    | 4.19.79.64   | 4.21.177.111  | 美国  9xz.net                       | NULL  | 68374336 | 68530544 |
    | 4.21.177.112 | 4.21.177.127  | 美国 Kraft Group                    | NULL  | 68530544 | 68530560 |
    | 4.21.177.128 | 4.21.177.255  | 美国 南新汉普郡学院                 | NULL  | 68530560 | 68530688 |
    | 4.21.178.0   | 4.36.124.127  | 美国  9xz.net                       | NULL  | 68530688 | 69500032 |
    | 4.36.124.128 | 4.36.124.255  | 美国 Technical Resource Connections | Inc   | 69500032 | 69500160 |
    | 4.36.125.0   | 4.36.127.255  | 美国 坦帕大学                       | NULL  | 69500160 | 69500928 |
    | 4.36.128.0   | 4.37.215.255  | 美国  9xz.net                       | NULL  | 69500928 | 69588992 |
    | 4.37.216.0   | 4.37.219.255  | 美国 德克萨斯女子大学               | NULL  | 69588992 | 69590016 |
    | 4.37.220.0   | 4.41.60.255   | 美国  9xz.net                       | NULL  | 69590016 | 69811456 |
    | 4.41.61.0    | 4.41.61.255   | 美国 EARTHLINK公司                  | NULL  | 69811456 | 69811712 |
    | 4.41.62.0    | 4.43.68.255   | 美国  9xz.net                       | NULL  | 69811712 | 69944576 |
    | 4.43.69.0    | 4.43.69.95    | 美国 罗斯门特学院                   | NULL  | 69944576 | 69944672 |
    | 4.43.69.96   | 4.208.48.255  | 美国 Genuity用户                    | NULL  | 69944672 | 80752896 |
    | 4.208.49.0   | 4.208.49.255  | 美国 加洲                           | NULL  | 80752896 | 80753152 |
    | 4.208.50.0   | 4.237.255.255 | 美国 Genuity用户                    | NULL  | 80753152 | 82706432 |
    | 4.238.0.0    | 4.239.255.255 | 美国 宾夕法尼亚州                   | NULL  | 82706432 | 82837504 |
    +--------------+---------------+-------------------------------------+-------+----------+----------+
    22 rows in set (0.01 sec)mysql>
      

  17.   

    SELECT SUBSTRING(StartIPText,1,9),StartIPText ,EndIPText FROM iptable   WHERE Country LIKE '%广州%' AND LOCAL= '电信'GROUP BY SUBSTRING(StartIPText,1,9)  HAVING COUNT(*)>1;