ダニエル:
私は2つのテーブルは、一方が他方一つは「licensesorig」と呼ばれ、「licensesbkp」と呼ばれています。提供されたライセンスキーが(1〜5)テーブルlicensesorigで発見された場合は、licensesbkpにすべての列をコピーします。licensesbkpの行がexistendすでにある場合、私は知らないように、私は「挿入が存在しない場合は、他の更新」声明その上に必要です。これは私がON DUPLICATE KEY UPDATEと試みるものです。
現在、私は、MySQLのエラー#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')
ローランChoulette:
私が考えるON DUPLICATE KEY UPDATEの一部をなし、クエリの最後に置かれなければならないlicensesbkp、licensesorig SETの一部:
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