问题描述
我想把 从A表和B表中查询出来的数据插入C表
A表的结构如下
ID UserName
1 600351
B表的结构如下
ID Code
1 7708893
2 7708894
3 7708895
4 7708896
5 7708897
6 7708898
C表的结构
如下
id aid code
我想把A把UserName和B表的Code批量插入到C表最终想要结果
id aid code
1 600351 7708893
2 600351 7708894
3 600351 7708895
4 600351 7708896
5 600351 7708897
6 600351 7708898
SQL?
------解决方案--------------------
----------------------------------------------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2013-10-23 15:57:06
-- Version:
-- Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
-- Dec 28 2012 20:23:12
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据:[a]
if object_id('[a]') is not null drop table [a]
go
create table [a]([ID] int,[UserName] int)
insert [a]
select 1,600351
--> 测试数据:[b]
if object_id('[b]') is not null drop table [b]
go
create table [b]([ID] int,[Code] int)
insert [b]
select 1,7708893 union all
select 2,7708894 union all
select 3,7708895 union all
select 4,7708896 union all
select 5,7708897 union all
select 6,7708898
--------------开始查询--------------------------
INSERT INTO C(id, aid , code)
select id,(SELECT username FROM a)aid,code
from [b]
----------------结果----------------------------
/*
*/
------解决方案--------------------
CREATE TABLE #UserInfo
(
ID INT
,UserName VARCHAR(20)
)
CREATE TABLE #UserCode
(
ID INT
,Code VARCHAR(20)
)
CREATE TABLE #UserResult
(
ID INT
,AId VARCHAR(20)
,Code VARCHAR(20)
)
INSERT INTO #UserInfo
VALUES(1,'600351')
INSERT INTO #UserCode
SELECT 1, '7708893' UNION ALL
SELECT 2, '7708894' UNION ALL
SELECT 3, '7708895' UNION ALL
SELECT 4, '7708896' UNION ALL
SELECT 5, '7708897' UNION ALL
SELECT 6, '7708898'
INSERT INTO #UserResult
SELECT ID
,(SELECT UserName FROM #UserInfo WHERE ID=1) AS AId
,Code
FROM #UserCode
SELECT * FROM #UserResult
/*
ID AId Code
1 600351 7708893
2 600351 7708894
3 600351 7708895
4 600351 7708896
5 600351 7708897
6 600351 7708898
*/
------解决方案--------------------
A,B木有關係連接的話
create table
#A(ID INT,UserName varchar(10));
insert #A
SELECT 1,'600351'
--union all select 2,'600352'
create table #B
([ID] int,[Code] int)insert #B
select 1,'7708893' union all
select 2,'7708894' union all
select 3,'7708895' union all
select 4,'7708896' union all
select 5,'7708897' union all
select 6,'7708898'
select ab.ID , a.UserName ,ab.Code from
#A a
cross apply (select * from #B b ) AB
drop table #A
drop table #B