MySQL INSERT после присоединения - PullRequest
0 голосов
/ 29 апреля 2011

У меня есть две таблицы, как показано ниже.

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
где тип ссылки пусто соединен с условием с table1.site = table2.site.

Я пытался:

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

Я хочу вставить запрос. как работает запрос на обновление и хотите узнать, как можно выполнить вставку?

1 Ответ

0 голосов
/ 29 апреля 2011

Редактировать: полностью отредактировано после уточнения:

Создание таблицы1:

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);

Создание таблицы2:

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

...