在重复的 mysql 查询中插入 select

insert into select on duplicate mysql query

我正在尝试更新 MySQL、

中的重复记录

我有一个包含许多列的 table,但我只想更新另一个 table 的某些列,其描述与当前 table 相同,但它不会更新记录。

我的查询是:

insert into backup_prochart.symbol_list(ticker,end_date,cur_date) select ticker,t.end_date,t.cur_date from prochart.symbol_list t where ticker=t.ticker and ticker= 'MAY17' on duplicate key update end_date=t.end_date,cur_date=t.cur_date;

我试过的另一个查询

insert into backup_prochart.symbol_list(ticker,end_date,cur_date) select t.ticker,t.end_date,t.cur_date from prochart.symbol_list t where ticker=t.ticker and t.ticker= 'MAY17' on duplicate key update end_date=t.end_date,cur_date=t.cur_date;

任何人都可以告诉我我的查询有什么问题吗?

您说您正在尝试更新记录,但您使用的是 INSERT 语句。您不应该使用 UPDATE 而不是 INSERT 吗?

可以找到 INSERTUPDATE 之间的区别 here

请注意,您可以在单个查询中使用 UPDATESELECT

你可以试试:

INSERT INTO backup_prochart.symbol_list (ticker, end_date, cur_date) 
SELECT ticker, end_date, cur_date FROM prochart.symbol_list WHERE ticker = 'MAY17' 
ON DUPLICATE KEY UPDATE end_date = values(end_date), cur_date = values(cur_date);

当然,"ticker" 列对于 table "backup_prochart.symbol_list" 必须定义为唯一的。

试试这个。它对我有用。

INSERT INTO employee_projects
            (employee_id,
             proj_ref_code)
SELECT ep.employee_id,
       ep.proj_ref_code
FROM   hs_hr_emp_projects_history ep
WHERE  NOT EXISTS (SELECT 1
                   FROM   employee_projects p
                   WHERE  ep.employee_id = p.employee_id
                          AND ep.proj_ref_code = p.proj_ref_code)