首页 > 其他 > 详细

基站多小区数据合并为基站数据

时间:2020-03-13 23:55:32      阅读:147      评论:0      收藏:0      [点我收藏+]

首先,我们在数据库test下创建数据表cell,然后插入数据,代码如下:

USE test;

DROP TABLE IF EXISTS cell;

CREATE TABLE `test`.`cell`(
        `id` INT NOT NULL,
        `小区名称` VARCHAR(255)  NULL,          
        `基站名称` VARCHAR(255)  NULL //最后一项不能有逗号,否则会报错
    );
    
INSERT INTO `cell`(id,小区名称,基站名称) VALUES 
(1,"小区_11","基站1"),
(2,"小区_12","基站1"),
(3,"小区_13","基站1"),
(4,"小区_21","基站2"),
(5,"小区_22","基站2"),
(6,"小区_23","基站2"); //char类型的数据需要用单引号或者双引号括起来

接下来,我们需要将数据进行处理,将同属于一个基站的小区只留一条数据,相当于对于基站名称列去重

我们执行语句:

SELECT id,小区名称,基站名称 FROM cell GROUP BY 基站名称; 

技术分享图片

 

 

 分组会自动只保留一条小区数据,如果我们想保留指定的小区数据呢,比如2小区,也就是末尾带2的小区

我们使用临时表来操作,将分组后的最小,最大id通过union放在一起,作为条件筛选

CREATE TEMPORARY TABLE to_delete (`基站名称` VARCHAR(255) NOT NULL, delete_id INT NOT NULL);  
 
INSERT INTO to_delete(基站名称,delete_id)  
SELECT 基站名称, MIN(id) FROM cell GROUP BY 基站名称 HAVING COUNT(*) > 1 UNION SELECT 基站名称, MAX(id) FROM cell GROUP BY 基站名称 HAVING COUNT(*) > 1;  

SELECT * FROM cell WHERE id NOT IN (SELECT delete_id FROM to_delete);

技术分享图片

 

 一些注意事项:

1、mysql的字段名,表名通常不需要加任何引号,如果非要加上引号,必须加反引号。

2、mysql的别名可以不加引号,如果加引号,单、双、反引号都可以

3、单引号,双引号都可以用来表示字符串

4、表名和列名可以使用中文,但不推荐

 

基站多小区数据合并为基站数据

原文:https://www.cnblogs.com/guojuxia/p/12489810.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!