在重复的 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
吗?
可以找到 INSERT
和 UPDATE
之间的区别 here
请注意,您可以在单个查询中使用 UPDATE
和 SELECT
。
你可以试试:
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)
我正在尝试更新 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
吗?
可以找到 INSERT
和 UPDATE
之间的区别 here
请注意,您可以在单个查询中使用 UPDATE
和 SELECT
。
你可以试试:
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)