有两个表A(id,sname,age),B(id,aname)。
要求是:把A表里符合A.id=B.id的记录的sanme列更新为B中aname列的值
例子:
A
------------
id sname age1 张三 10
2 李四 20
3 王五 30
B
------------
id aname1 群众1
2 lisi
3 木头要求更新后A表数据如下:
A
------------
id sname age1 群众1 10
2 lisi 20
3 木头 30
各位,用sql语句怎么写
要求是:把A表里符合A.id=B.id的记录的sanme列更新为B中aname列的值
例子:
A
------------
id sname age1 张三 10
2 李四 20
3 王五 30
B
------------
id aname1 群众1
2 lisi
3 木头要求更新后A表数据如下:
A
------------
id sname age1 群众1 10
2 lisi 20
3 木头 30
各位,用sql语句怎么写
IF OBJECT_ID('[a]') IS NOT NULL
DROP TABLE [a]
GO
CREATE TABLE [a] ([id] [int],[sname] [nvarchar](10),[age] [int])
INSERT INTO [a]
SELECT '1','张三','10' UNION ALL
SELECT '2','李四','20' UNION ALL
SELECT '3','王五','30'--> 生成测试数据表: [B]
IF OBJECT_ID('[B]') IS NOT NULL
DROP TABLE [B]
GO
CREATE TABLE [B] ([id] [int],[aname] [nvarchar](10))
INSERT INTO [B]
SELECT '1','群众1' UNION ALL
SELECT '2','lisi' UNION ALL
SELECT '3','木头'--SELECT * FROM [a]
--SELECT * FROM [B]-->SQL查询如下:
UPDATE a
SET a.sname = b.aname
FROM b
WHERE a.id = b.idSELECT * FROM a
/*
id sname age
----------- ---------- -----------
1 群众1 10
2 lisi 20
3 木头 30(3 行受影响)
*/
INSERT INTO [B]
SELECT '1','群众1' UNION ALL
SELECT '2','lisi' UNION ALL
SELECT '3','木头'
这样的语句来插入数据的,麻烦问一下,为什么这样用,那些书上不都是说用类似
insert into B .... values(...) 的语句么,这个是额外的问题,选择回答,呵呵
从某种意义上说,批量插入数据用 insert tb select ... union all select ... 比insert tb values(...)来得高效。