繁体   English   中英

MySQL-合并两个表-有条件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM