小记----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

 

posted @ 2018-03-03 11:40  LucasYan  阅读(404)  评论(0)    收藏  举报