在重复的mysql查询中插入select

时间:2017-07-28 06:15:16

标签: mysql select insert centos on-duplicate-key

我正在尝试更新MySQL中的重复记录,

我有一个包含许多列的表但我想只更新另一个表中与某个desc相同的列,但它不会更新记录。

我的查询是:

  

插入backup_prochart.symbol_list(ticker,end_date,cur_date)   从prochart.symbol_list t中选择ticker,t.end_date,t.cur_date   ticker = t.ticker和ticker =' MAY17'重复密钥更新   END_DATE = t.end_date,cur_date = t.cur_date;

我试过的另一个查询

  

插入backup_prochart.symbol_list(ticker,end_date,cur_date)从prochart.symbol_list t中选择t.ticker,t.end_date,t.cur_date,其中ticker = t.ticker和t.ticker =' MAY17&#39 ; on duplicate key update end_date = t.end_date,cur_date = t.cur_date;

有谁能告诉我我的查询有什么问题。?

3 个答案:

答案 0 :(得分:0)

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

可以找到INSERTUPDATE之间的差异here

请注意,您可以在一次查询中使用UPDATESELECT

答案 1 :(得分:0)

你可以尝试:

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);

当然是专栏"自动收报机"必须被定义为表的唯一性" backup_prochart.symbol_list"。

答案 2 :(得分:0)

试试这个。它对我有用。

插入employee_projects(employee_id,proj_ref_code) 从hs_hr_emp_projects_history ep中选择ep.employee_id,ep.proj_ref_code 哪里不存在(     从employee_projects p中选择1,其中ep.employee_id = p.employee_id和ep.proj_ref_code = p.proj_ref_code )