爱亚搏 > 根据一个表中的数据去更新另一个表中的数据

根据一个表中的数据去更新另一个表中的数据

分类: sql  |  作者: zzm628 相关  |  发布日期 : 2016-06-11  |  热度 : 48°

两个表,表1,id  pid  amount,表2,pid(主键)   amount,怎么根据表2中的pid,更新表1中的amount。


建表sql:

-- ----------------------------
-- Table structure for `table1`
-- ----------------------------
DROP TABLE IF EXISTS `table1`;
CREATE TABLE `table1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pid` int(11) DEFAULT NULL,
  `amount` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;


-- ----------------------------
-- Records of table1
-- ----------------------------
INSERT INTO `table1` VALUES ('1', '1', null);
INSERT INTO `table1` VALUES ('2', '2', null);
INSERT INTO `table1` VALUES ('3', '3', null);
INSERT INTO `table1` VALUES ('4', '4', null);
INSERT INTO `table1` VALUES ('5', '5', null);
INSERT INTO `table1` VALUES ('6', '6', null);


-- ----------------------------
-- Table structure for `table2`
-- ----------------------------
DROP TABLE IF EXISTS `table2`;
CREATE TABLE `table2` (
  `pid` int(11) NOT NULL AUTO_INCREMENT,
  `amount` int(11) DEFAULT NULL,
  PRIMARY KEY (`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;


-- ----------------------------
-- Records of table2
-- ----------------------------
INSERT INTO `table2` VALUES ('1', '32');
INSERT INTO `table2` VALUES ('2', '434');
INSERT INTO `table2` VALUES ('3', '3232');
INSERT INTO `table2` VALUES ('4', '311');
INSERT INTO `table2` VALUES ('5', '434');
INSERT INTO `table2` VALUES ('6', '1');


方法:

sql:UPDATE table1 t1 SET amount=(SELECT amountFROM table2 t2 WHERE t2.pid=t1.pid);