小记----update语句关联子查询
table1(a,b) table2(a,b),关联子查询更新
mysql
1.创建测试表
-- ----------------------------
-- Table structure for table1
-- ----------------------------
CREATE TABLE `table1` ( `a` int(255) NOT NULL, `b` int(255) DEFAULT NULL, PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Table structure for table2
-- ----------------------------
CREATE TABLE `table2` ( `a` int(255) NOT NULL, `b` int(255) DEFAULT NULL, PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.插入测试数据
-- ---------------------------- -- Records of table1 -- ---------------------------- INSERT INTO `table1` VALUES ('1', null); INSERT INTO `table1` VALUES ('2', '1'); INSERT INTO `table1` VALUES ('3', null); INSERT INTO `table1` VALUES ('4', '1'); INSERT INTO `table1` VALUES ('5', null); -- ---------------------------- -- Records of table2 -- ---------------------------- INSERT INTO `table2` VALUES ('1', '2'); INSERT INTO `table2` VALUES ('3', '2'); INSERT INTO `table2` VALUES ('5', '2');
table1 table2

3.通过Update方式更新
UPDATE table1 SET b = (SELECT b FROM table2 WHERE a = table1.a) WHERE table1.b IS NULL
4.更新之后的table1

感觉没有sql server 的方式强大
SQLServer
1.创建测试表
-- ---------------------------- -- Table structure for table1 -- ---------------------------- CREATE TABLE [dbo].[table1] ( [a] int NOT NULL , [b] int NULL , PRIMARY KEY ([a]) ) ON [PRIMARY] GO -- ---------------------------- -- Table structure for table1 -- ---------------------------- CREATE TABLE [dbo].[table1] ( [a] int NOT NULL , [b] int NULL , PRIMARY KEY ([a]) ) ON [PRIMARY] GO
2.插入测试数据
-- ---------------------------- -- Records of table1 -- ---------------------------- INSERT INTO [dbo].[table1] ([a], [b]) VALUES (N'1', N'2') GO GO INSERT INTO [dbo].[table1] ([a], [b]) VALUES (N'2', N'1') GO GO INSERT INTO [dbo].[table1] ([a], [b]) VALUES (N'3', N'2') GO GO INSERT INTO [dbo].[table1] ([a], [b]) VALUES (N'4', N'1') GO GO INSERT INTO [dbo].[table1] ([a], [b]) VALUES (N'5', N'2') GO GO -- ---------------------------- -- Records of table2 -- ---------------------------- INSERT INTO [dbo].[table2] ([a], [b]) VALUES (N'1', N'2') GO GO INSERT INTO [dbo].[table2] ([a], [b]) VALUES (N'3', N'2') GO GO INSERT INTO [dbo].[table2] ([a], [b]) VALUES (N'5', N'2') GO GO
table1 table 2

3.通过Update方式更新
UPDATE table1 SET table1.b = table2.b FROM table2 WHERE table1.a= table2.a
4.更新之后的table1


浙公网安备 33010602011771号