使用其他主键将行从一个表复制到另一个表

时间:2014-01-08 18:24:31

标签: mysql sql

我试过了:

INSERT INTO event_log_tracker_table 
SELECT * FROM event_tracker_table WHERE eventid = '560'

但是我收到了这个错误:

Error Code: 1136. Column count doesn't match value count at row 1

除了一件事之外,列完全相同......

我在eventlogid中添加了另一列(event_log_tracker_table)作为主键。如何从另一个表中插入一行并将其添加到新表中的主键?

以下是表格的结构。

event_log_tracker_table (24 columns)
-----------------------
eventlogid - PK
eventid - INT
//
//  22 other columns
//

event_tracker_table (23 columns)
-----------------------
eventid - PK
//
//  22 other columns
//

我试过这样做:

INSERT INTO event_log_tracker_table 
SELECT null, * FROM event_tracker_table WHERE eventid = '560'

1 个答案:

答案 0 :(得分:1)

正如SELECT Syntax所述:

  
      
  • 将不合格的 * 与选择列表中的其他项一起使用可能会产生解析错误。要避免此问题,请使用合格的 tbl_name.* 参考

    SELECT AVG(score), t1.* FROM t1 ...
    
  •   

因此,您可以取代SELECT NULL, *来限定通配符:

INSERT INTO event_log_tracker_table 
SELECT NULL, event_tracker_table.*
FROM   event_tracker_table
WHERE  eventid = '560'