专栏首页Hadoop数据仓库MySQL 数字辅助表去重、排序、行转列

MySQL 数字辅助表去重、排序、行转列

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/53895786

一、需求 一个字段有多行记录,查询结果为去重排序的一行记录,例如记录值为: 1,2,4 1,4,5 2,3 23,56,67 3,4 要求查询结果为: 1,2,3,4,5,23,56,67 二、方案 使用数字辅助表实现

-- 建立数字辅助表  
create table nums (  
    a int not null primary key  
);  
delimiter $$  
create procedure pFastCreateNums(cnt int)  
begin  
    declare s int default 1;  
    truncate table nums;  
    insert into nums select s;  
    while s<=cnt do  
        insert into nums select a+s from nums where a+s <= cnt;  
        set s=s*2;  
    end while;  
    commit;  
end $$  
delimiter ;  
call pFastCreateNums(1000000);  
  
-- 建立测试表  
create table t1 (  
    a varchar(100)  
);  
insert into t1 values('1,2,4'),('1,4,5'),('2,3'),('23,56,67'),('3,4');  
commit;  
  
-- 查询  
select   
    group_concat(a)  
from  
    (select   
        a  
    from  
        (select   
        cast(substring_index(substring_index(t1.a, ',', nums.a), ',', - 1)  
                as unsigned) a  
    from  
        t1, nums  
    where  
        nums.a <= length(t1.a) - length(replace(t1.a, ',', '')) + 1) t  
    group by a) t1;  

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HAWQ技术解析(十) —— 过程语言

            HAWQ支持用户自定义函数(user-defined functions,UDF),还支持给HAWQ内部的函数起别名。编写UDF的语言可以是SQ...

    用户1148526
  • MADlib——基于SQL的数据挖掘解决方案(25)——分类之随机森林

    装袋(bagging)又称自助聚集(bootstrap aggregating),是一种根据均匀概率分布从数据集中重复抽样(有放回的)的技术。每...

    用户1148526
  • 快速生成数字辅助表

    数字辅助表只有一个整数列,包含从1到N个整数序列值,N通常很大。对MySQL来讲,数字辅助表是一个强大的工具,编写SQL语句时经常用数据表与数字...

    用户1148526
  • 几种去重的SQL写法

    墨天轮社区的每日一题(https://www.modb.pro/test),可以说是个小而精的专栏,利用碎片时间,就可以学习知识,非常推荐。

    bisal
  • 数据结构算法操作试题(C++/Python)——在排序数组中查找元素的第一个和最后一个位置

    数据结构算法操作试题(C++/Python):数据结构算法操作试题(C++/Python)——目录

    莫斯
  • oracle 数据库常用命令

    1、su – oracle 不是必需,适合于没有DBA密码时使用,可以不用密码来进入sqlplus界面。 2、sqlplus /nolog 或sqlplus s...

    赵腰静
  • Leetcode 两数之和

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    Debug客栈
  • leetcode-91-解码方法(动态规划和递归两种解法)

    1、这道题给定一个字符串,字符串中只含有数字,数字1可以解码为A,数字2可以解码为B……数字26可以解码为Z。

    chenjx85
  • LeetCode 1389. 按既定顺序创建目标数组

    目标数组 target 最初为空。 按从左到右的顺序依次读取 nums[i] 和 index[i],在 target 数组中的下标 index[i] 处插入值...

    freesan44
  • 指南:使用Keras和TensorFlow探索数据增强

    数据扩充使模型对较小的变化更鲁棒,因此可以防止模型过度拟合。将扩充后的数据存储在内存中既不实际也不高效,这就是Keras的Image Data Generato...

    用户6543014

扫码关注云+社区

领取腾讯云代金券