JOIN之后的MySQL INSERT

时间:2011-04-29 09:51:00

标签: mysql join insert

我有两张桌子,如下所示。

table1

site | Link type
-----+----------
 A   | pdf
 B   | html
 C   | NULL
 D   | NULL

Table2

site | link type
-----+----------
 C   | htm
 D   | doc

这是我想要的结果:

site | link type
-----+----------
 A   | pdf
 B   | html
 C   | htm
 D   | doc

我想要一个插入查询,将表2中的链接类型的值插入到表1中 其中链接类型为null,并且条件为table1.site = table2.site

我试过了:

INSERT INTO table1(linktype)
SELECT linktype FROM table1 t1 
JOIN table2 t2 
ON t1.site=t2.site

我想要一个插入查询。因为更新查询正在运行并且想知道如何完成插入?

1 个答案:

答案 0 :(得分:0)

编辑:澄清后完全编辑:

创建table1:

SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `table1`;
CREATE TABLE `table1` (
  `site` varchar(250) DEFAULT NULL,
  `linktype` varchar(250) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


INSERT INTO `table1` VALUES ('A', 'pdf');
INSERT INTO `table1` VALUES ('B', 'html');
INSERT INTO `table1` VALUES ('C', null);
INSERT INTO `table1` VALUES ('D', null);

创建table2:

SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `table2`;
CREATE TABLE `table2` (
  `site` varchar(250) DEFAULT NULL,
  `linktype` varchar(250) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `table2` VALUES ('C', 'htm');
INSERT INTO `table2` VALUES ('D', 'doc');

插入查询:

INSERT INTO 
    table1  
    (site, linktype)
    (
       SELECT 
           table2.site, 
           table2.linktype
       FROM 
           table2
       JOIN 
           table1
       ON 
           table1.site = table2.site
   )
;

插入查询后的表1:

Table1