MYSQL:コピー表の行やINSERTていない場合は他のUPDATEが存在します

ダニエル:

私は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 

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=25994&siteId=1
おすすめ