[英]MySQL - merge two tables - with condition
我想将2个这样的表合并到一个表中,并使用重复的键行在合并表中添加最旧的DateAdded
值。
(Key1,Key2)
是PRIMARY KEY
。
+-----------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-----------+------+-----+-------------------+-----------------------------+
| Key1 | int(10) | NO | PRI | | |
| Key2 | int(10) | NO | PRI | | |
| DateAdded | DATETIME | NO | | | |
+-----------+-----------+------+-----+-------------------+-----------------------------+
随意将表名更改为您的具体名称:
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
更新:或者,这也应该起作用:
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.