mysql 多表联合查询 游标_SQL 数据库联合查询,其中一张表需要将多个相同ID对应信息横向排列...

这篇博客介绍了如何在MySQL中进行多表联合查询,特别是在一个表中需要将相同ID的联系人信息横向展示的情况。通过创建临时表,利用游标和动态SQL,逐步整理和更新数据,最终达到显示每个客户所有联系人及其联系方式的效果。文章详细展示了整个过程,包括创建临时表、增加字段、数据整理和显示结果的步骤。
摘要由CSDN通过智能技术生成

/*** 创建结果表 **/

select 客户ID, 客户名称,邮编,地址 into tmp_jieguo from company_basic

--创建联系人临时表

select identity(int,1,1)as 序号,cast(0 as bigint)as lxrID,客户ID,姓名,固定电话+'、'+手机号码 as lxfs into tmp_lxr from contact_person order by 客户ID,联系人ID

/** 整理结果表 增加字段***/

--单一客户最大联系人数

DECLARE @ad int

select @ad=max(addmax) from (select 客户ID,count(客户ID) addmax from contact_person group by 客户ID) a

DECLARE @addmax varchar(10),

@add int,

@strsql varchar(8000),

@lianxr varchar(10),

@lianxfs varchar(50)

SELECT @add = 1

SELECT @addmax = 1

WHILE @addmax <= @ad

BEGIN

select @lianxr= '联系人'+@addmax,@lianxfs= '联系方式'+@addmax

set @strsql='alter table tmp_jieguo add '+@lianxr+' va

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL中,可以使用游标来遍历多查询的结果集。创建游标的步骤如下: 1. 使用DECLARE语句声明游标,指定游标的名称和SELECT语句,例如: ```sql DECLARE cursor_name CURSOR FOR SELECT column_name(s) FROM table_name1 JOIN table_name2 ON table_name1.column_name = table_name2.column_name; ``` 2. 使用OPEN语句打开游标,例如: ```sql OPEN cursor_name; ``` 3. 使用FETCH语句获取游标的下一行数据,例如: ```sql FETCH NEXT FROM cursor_name INTO variable_name1, variable_name2, ...; ``` 这里的variable_name1, variable_name2, ...是用来存储查询结果的变量。 4. 使用WHILE循环遍历游标的所有行,例如: ```sql WHILE @@FETCH_STATUS = 0 BEGIN -- 处理查询结果 FETCH NEXT FROM cursor_name INTO variable_name1, variable_name2, ...; END ``` 5. 使用CLOSE语句关闭游标,例如: ```sql CLOSE cursor_name; ``` 6. 使用DEALLOCATE语句释放游标所占用的资源,例如: ```sql DEALLOCATE cursor_name; ``` 举个例子,假设我们有两个table1和table2,它们有一个共同的列column1,我们想要遍历它们的交集。可以使用以下代码: ```sql DECLARE cursor_name CURSOR FOR SELECT column1 FROM table1 JOIN table2 ON table1.column1 = table2.column1; OPEN cursor_name; FETCH NEXT FROM cursor_name INTO @variable1; WHILE @@FETCH_STATUS = 0 BEGIN -- 处理查询结果 PRINT @variable1; FETCH NEXT FROM cursor_name INTO @variable1; END CLOSE cursor_name; DEALLOCATE cursor_name; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值