Mysql
重複行但每次遞增 ID
我有將多個 Magento 數據庫合併在一起的艱鉅任務,我將數百個塊導入主數據庫,但隨後必須檢查每一個塊並更改儲存 ID 以將每個導入的塊與多儲存環境中的相關儲存關聯.
在你把我移到 Magento SE 之前等一下
我只是在一個查詢之後,我可以在數據庫中執行以複製行 (x) 次,並從最後一個順序自動遞增 ID 列。
例如,我有一個像這樣的現有表:-
... ╔══════════╦═══════════╗ ║ id ║ store_id ║ ╠══════════╬═══════════╣ ║ 49 ║ 1 ║ ║ 50 ║ 1 ║ ║ 51 ║ 1 ║ ║ 52 ║ 1 ║ ║ 53 ║ 1 ║ ║ 54 ║ 1 ║ ║ 55 ║ 1 ║ ║ 56 ║ 1 ║ ║ 57 ║ 1 ║ ║ 58 ║ 1 ║ ║ 59 ║ 1 ║ ╚══════════╩═══════════╝ ...
我需要像這樣添加新行:-
... ╔══════════╦═══════════╗ ║ id ║ store_id ║ ╠══════════╬═══════════╣ ║ 60 ║ 2 ║ ║ 61 ║ 2 ║ ║ 62 ║ 2 ║ ╚══════════╩═══════════╝ ...
所以最終結果是這樣的: -
... ╔══════════╦═══════════╗ ║ id ║ store_id ║ ╠══════════╬═══════════╣ ║ 58 ║ 1 ║ ║ 59 ║ 1 ║ ║ 60 ║ 2 ║ ║ 61 ║ 2 ║ ║ 62 ║ 2 ║ ║ 63 ║ 2 ║ ║ 64 ║ 2 ║ ║ 65 ║ 2 ║ ║ 66 ║ 2 ║ ║ 67 ║ 2 ║ ║ 68 ║ 2 ║ ╚══════════╩═══════════╝ ...
我希望有一個可以使用的查詢,它可以添加指定
store_id
的每一行2
並允許id
自動遞增?不幸的是,我沒有設法在網上找到一個例子,但我懷疑它應該是可能的/相對直接的?
如果該
id
列具有該AUTO_INCREMENT
屬性,那麼它非常簡單。不要將其包含在插入列表中:INSERT INTO tableX (store_id, column3, column4, ...) SELECT 2, column3, column4, ... FROM tableX WHERE store_id = 1 ;
這將插入與 一樣多的行
id = 1
。如果您想對多個
store_id
值執行此操作(不僅針對2
),例如對於 10 個商店 id,插入 10N 行,其中 N 是 id = 1 的行數,您可以擴展為:INSERT INTO tableX (store_id, column3, column4, ...) SELECT s.store_id, t.column3, t.column4, ... FROM tableX AS t CROSS JOIN ( SELECT 2 AS store_id UNION ALL SELECT 3 UNION ALL --- SELECT 11 ) AS s WHERE t.store_id = 1 ;