Mysql

重複行但每次遞增 ID

  • March 3, 2016

我有將多個 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 ; 

引用自:https://dba.stackexchange.com/questions/131165