MySQL棘手的查询

时间:2014-04-25 10:22:44

标签: mysql

我有两张桌子

TABLE1 : ID(PRIMARTY-INT) COLUMN1(CHAR),LAST_MODIFIED TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

TABLE2 : ID(INT) COLUMN1(CHAR)

TABLE2包含大约1000条记录。

如果我使用

REPLACE INTO TABLE1(ID,COLUM1) SELECT ID,COLUMN FROM TABLE2

然后即使先前的记录相同,LAST_MODIFIED也会更新。

如果我使用INSERT,则会在重复记录时出错。

如果我使用INSERT IGNORE,则无法更新记录。

我想要的:更新/添加新值,如果新值与旧值不同,也会更新LAST_MODIFIED值。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

REPLACE INTO TABLE1(ID,COLUM1) 
SELECT TABLE2.ID,TABLE2.COLUMN 
FROM TABLE2
INNER JOIN TABLE1 on (TABLE1.ID = TABLE2.ID) AND (TABLE1.COLUMN <> TABLE2.COLUMN)

或者你可以试试这个:

UPDATE table1 SET 
  table1.field1 = table2.field1 
   .... 
FROM table1 
INNER JOIN table2 on table1.id = table2.id