赞
踩
如下,表1(qq_name)与表2(concat_name)使用查询互相转化,表1-表2可以使用group_concat函数实现,表2-表1一时半会我也想不出来,然后想着是否能用python写出来。
表1(qq_name)如下:
表2(concat_name)如下:
下面是python处理代码:
import pandas as pd import pymysql '''创建mysql数据库连接,这里尝试用的是本地数据库,表1名字为qq_name''' connect = pymysql.connect(host = 'localhost',user = 'root',password = '123456',database = 'yy',port = 3306,charset = 'utf8') '''读取qq_name表中的内容,赋值给qq_name变量''' qq_name = pd.read_sql('select * from qq_name',connect) #这里我们打印下数据库里这表表看下,效果如上图:表1。 print(qq_name) '''定义一个group_concat函数:表1-表2转化''' def group_concat(data): return '_'.join(data) '''使用groupby聚合,apply传入自定义函数,即可得到concat_name表''' concat_name = qq_name.groupby('qq')['name'].apply(group_concat).reset_index(drop=False) #我们打印下concat_name看下,效果如上图:表2。 print(concat_name) '''定义一个函数,实现concat_name转化为qq_name''' def restore_qq_name(df): columns=['qq','name'] '''创建一个DataFrame,即我们需要还原的qq_name''' qq_name = pd.DataFrame(columns=columns) '''遍历索引''' for each in df.index: '''切分group_concat的字段,返回一个列表''' name_list = df.loc[each,'name'].split('_') '''遍历name_list,然后逐条数据添加到qq_name''' for name in name_list: qq_name = qq_name.append(pd.DataFrame([[df.loc[each,'qq'],name]],columns=columns)) return qq_name '''调用函数输出qq_name,重置下索引。''' qq_name = restore_qq_name(concat_name).reset_index(drop=True) #打印下qq_name看下,效果如上:表1. print(qq_name)
mysql查询语句:表1-表2
select qq, group_concat(name separator"_") name from qq_name group by qq;
有兴趣试试的同学,创表语句这里也给大家写好了:
# 创建表1:qq_name
create table qq_name(qq int, name varchar(10));
insert into qq_name values(123,"a"),(123,"b"),(123,"c"),(234,"f"),(234,"g");
# 创建表2:concat_name
create table concat_name select qq, group_concat(name separator"_") name from qq_name group by qq;
表2-表1的查询语句(不用存储过程),mysql大家知道怎么写的话,欢迎留言,先表以感谢~
逆向查询,hive中可以通过lateral view 与 explode函数实现
select qq,subview.view_name
from concat_name
-- subview是虚拟视图名称,view_name是虚拟字段名称,必须要加上;
lateral view explode(split(name,'_')) subview as view_name
select explode(split(name,"_")) from concat_name -- 返回一列五行数据,值分别为a,b,c,f,g
select qq,explode(split(name,"_")) from concat_name -- 会报错
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。