Daniel :
I have two tables, one is called "licensesbkp", the other one is called "licensesorig". If the provided license keys (1 to 5) are found in table licensesorig, then copy all columns into licensesbkp. As I dont know if the row in licensesbkp is already existend, I need on top of that a "insert if not exist, else update" statement. This is what I try with ON DUPLICATE KEY UPDATE.
Currently I get the MySQL Error #1064.
INSERT INTO licensesbkp
(uid, order_id, product_id, license_key, hash, expires_at, valid_for, source, status,
times_activated, times_activated_max, created_at, created_by, updated_at, updated_by)
SELECT '1234567', order_id, product_id, license_key, hash, expires_at, valid_for, source, status, times_activated,
times_activated_max, created_at, created_by, updated_at, updated_by
FROM licensesorig
ON DUPLICATE KEY UPDATE licensesbkp, licensesorig SET licensesbkp.order_id = licensesorig.order_id,
licensesbkp.product_id = licensesorig.product_id, licensesbkp.license_key = licensesorig.license_key,
licensesbkp.hash = licensesorig.hash, licensesbkp.expires_at = licensesorig.expires_at,
licensesbkp.valid_for = licensesorig.valid_for, licensesbkp.source = licensesorig.source,
licensesbkp.status = licensesorig.status, licensesbkp.times_activated = licensesorig.times_activated,
licensesbkp.times_activated_max = licensesorig.times_activated_max, licensesbkp.created_at =
licensesorig.created_at, licensesbkp.created_by = licensesorig.created_by, licensesbkp.updated_at =
licensesorig.updated_at, licensesbkp.updated_by = licensesorig.updated_by
WHERE licensesorig.license_key
IN ('licensekey1', 'licensekey2', 'licensekey3', 'licensekey4', 'licensekey5')
Laurent Choulette :
I think the ON DUPLICATE KEY UPDATE part must be placed at the end of the query without the licensesbkp, licensesorig SET part:
INSERT INTO licensesbkp
(uid, order_id, product_id, license_key, hash, expires_at, valid_for, source, status,
times_activated, times_activated_max, created_at, created_by, updated_at, updated_by)
SELECT '1234567', order_id, product_id, license_key, hash, expires_at, valid_for, source, status, times_activated,
times_activated_max, created_at, created_by, updated_at, updated_by
FROM licensesorig
WHERE licensesorig.license_key
IN ('licensekey1', 'licensekey2', 'licensekey3', 'licensekey4', 'licensekey5')
ON DUPLICATE KEY UPDATE licensesbkp.order_id = licensesorig.order_id,
licensesbkp.product_id = licensesorig.product_id, licensesbkp.license_key = licensesorig.license_key,
licensesbkp.hash = licensesorig.hash, licensesbkp.expires_at = licensesorig.expires_at,
licensesbkp.valid_for = licensesorig.valid_for, licensesbkp.source = licensesorig.source,
licensesbkp.status = licensesorig.status, licensesbkp.times_activated = licensesorig.times_activated,
licensesbkp.times_activated_max = licensesorig.times_activated_max, licensesbkp.created_at =
licensesorig.created_at, licensesbkp.created_by = licensesorig.created_by, licensesbkp.updated_at =
licensesorig.updated_at, licensesbkp.updated_by = licensesorig.updated_by