2016-08-22 4 views
0

Ich möchte 2 Tabellen, die so aussehen, in eine einzelne Tabelle zusammenführen und für doppelte Schlüsselzeilen den ältesten DateAdded Wert in der zusammengeführten Tabelle hinzufügen.MySQL - zwei Tabellen zusammenführen - mit Bedingung

(Key1,Key2) sind die PRIMARY KEY.

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

Antwort

1

Fühlen Sie sich frei, um die Tabellennamen auf Ihre Besonderheiten zu ändern:

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: Alternativ kann diese auch funktionieren sollte:

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;