2016-08-22 4 views
0

Я хочу объединить 2 таблицы, похожие на это, в одну таблицу и для повторяющихся строк ключей, чтобы добавить старое значение DateAdded в объединенную таблицу.MySQL - объединить две таблицы - с условием

(Key1,Key2) являются PRIMARY KEY.

+-----------+-----------+------+-----+-------------------+-----------------------------+ 
| Field  | Type  | Null | Key | Default   | Extra      | 
+-----------+-----------+------+-----+-------------------+-----------------------------+ 
| Key1  | int(10) | NO | PRI |     |        | 
| Key2  | int(10) | NO | PRI |     |        | 
| DateAdded | DATETIME | NO |  |     |        | 
+-----------+-----------+------+-----+-------------------+-----------------------------+ 

ответ

1

Вы можете изменить имена таблиц в вашей специфике:

INSERT INTO table_merged (Key1, Key2, dateAdded) 
SELECT Key1, Key2, MIN(dateAdded) dateAdded 
FROM (
    SELECT Key1, Key2, dateAdded 
    FROM table1 
    UNION ALL 
    SELECT Key1, Key2, dateAdded 
    FROM table2 
) a 
GROUP BY Key1, Key2 

UPDATE: С другой стороны, это также должно работать:

INSERT INTO table_merged (Key1, Key2, dateAdded) 
SELECT Key1, Key2, dateAdded 
FROM table1 
ON DUPLICATE KEY UPDATE 
    dateAdded = CASE WHEN VALUES(dateAdded) < dateAdded THEN VALUES(dateAdded) ELSE dateAdded END; 

INSERT INTO table_merged (Key1, Key2, dateAdded) 
SELECT Key1, Key2, dateAdded 
FROM table2 
ON DUPLICATE KEY UPDATE 
    dateAdded = CASE WHEN VALUES(dateAdded) < dateAdded THEN VALUES(dateAdded) ELSE dateAdded END; 
Смежные вопросы