现在有两张表:
1. user_base_info
表结构 id(varchar) userId(varchar) title(varchar) content(varchar)
1 159 性别 男
2 159 年龄 19
3 159 城市 北京
4 357 性别 女
5 357 年龄 22
6 357 城市 上海
...2. user_search
表结构 id userId(varchar) age(varchar) gender(varchar) city(varchar)
1 159 null null null
2 357 null null null 问题是 在Mysql中使用存储过程或游标 如何将user_base_info表中的数据更新到user_search表中 并转换成下面的格式:
id userId(varchar) age(varchar) gender(varchar) city(varchar)
1 159 19 男 北京
2 357 22 女 上海
1. user_base_info
表结构 id(varchar) userId(varchar) title(varchar) content(varchar)
1 159 性别 男
2 159 年龄 19
3 159 城市 北京
4 357 性别 女
5 357 年龄 22
6 357 城市 上海
...2. user_search
表结构 id userId(varchar) age(varchar) gender(varchar) city(varchar)
1 159 null null null
2 357 null null null 问题是 在Mysql中使用存储过程或游标 如何将user_base_info表中的数据更新到user_search表中 并转换成下面的格式:
id userId(varchar) age(varchar) gender(varchar) city(varchar)
1 159 19 男 北京
2 357 22 女 上海
解决方案 »
- pgAdmin导出.backup文件后,再导入宁外一个库失败
- MySql客户端一闪就关了这是为什么?
- 要了亲命了!!!
- 这条sql语句怎么写 是高手的进来看看
- 求条件查询排序优化方法
- update ipgroup a set flag=0 where a.id <>(select min(id) from ipgroup where iplong=a.iplong) 在MYSQL里不好运行
- 关于mysql文件的.frm文件的导入
- 一个mysql中有关auto_increment的问题。
- mysql分库分表后适合用一致性哈希定位吗?
- 紧急求助
- 同样的代码,MySQL-Front成功运行,mysql命令行就报错,不知是何原因
- 检测MySql数据库的工具,大家一块讨论讨论
inner join user_base_info b1 on a.userId=b1.userId and b1.title='年龄'
inner join user_base_info b2 on a.userId=b2.userId and b2.title='性别'
inner join user_base_info b3 on a.userId=b3.userId and b3.title='城市'
set a.age=b1.content,a.gender=b2.content,a.city=b3.content
所以我不想用join的方式取得并插入,这样有点耗时。
INNER JOIN user_base_info b1 ON a1.userid=b1.userid AND b1.title='性别'
INNER JOIN user_base_info b2 ON a1.userid=b2.userid AND b2.title='城市'
SET a1.age=b.content,
a1.gender=b1.content,
a1.city=b2.content;
set a.age=b1.content;update user_search a inner join user_base_info b2 on a.userId=b2.userId and b2.title='性别'
set a.gender=b2.content;update user_search a inner join user_base_info b3 on a.userId=b3.userId and b3.title='城市'
set a.city=b3.content;...
begindeclare userId varchar(50);
declare bitc varchar(50);
declare bic varchar(50);declare l_userId cursor for select distinct User_Id from atr_user_search; /**userId**/
declare l_baseInfo_t cursor for select base_info_title from atr_user_base_info where base_info_userId=userId; /**base_info_title**/
declare l_baseInfo_c cursor for select base_info_content from atr_user_base_info where base_info_userId=userId and base_info_title=bitc; /**base_info_content**/open l_userId;
fetch l_userId into userId;
begin
open l_baseInfo_t;
fetch l_baseInfo_t into bitc;
begin
open l_baseInfo_c;
fetch l_baseInfo_c into bic;
begin
if (bitc = '现居住地') then
update atr_user_search set User_Search_13=bic where User_Id=userId;
end if;
end;
close l_baseInfo_c;
end;
close l_baseInfo_t;
end;
close l_userId;
end这是我做的一个测试 貌似没成功 5555