簡體   English   中英

將表中的行復制到具有不同ID的同一表中

[英]copying rows in a table into the same table with a different id

嗨,我正在嘗試復制表中的行,但是我需要使用另一個ID,也可以在該表中復制它。 id和second_id都是主鍵。 和外鍵。

+----+-----------+
| id | second_id |
+----+-----------+
|  1 |         1 |
|  1 |         2 |
|  1 |         3 |
|  2 |         2 |
+----+-----------+

因此,我需要將ID 1的所有second_id復制到ID 2,但最終,如果要使用ID 3,則也要復制該ID。

結果應該是

+----+-----------+
| id | second_id |
+----+-----------+
|  1 |         1 |
|  1 |         2 |
|  1 |         3 |
|  2 |         2 |
|  2 |         1 |
|  2 |         3 |
+----+-----------+ 

另外id是外鍵,所以如果我有id 3,也像id 2一樣將其復制,是否有任何解決方案?

使用表的自second_id獲取idsecond_id所有組合。 然后使用LEFT JOIN過濾掉已經存在的組合,因此您可以將其余的插入表中。

INSERT INTO yourTable (id, second_id)
SELECT DISTINCT t1.id, t2.second_id
FROM yourTable AS t1
CROSS JOIN yourTable AS t2
LEFT JOIN yourTable AS t3 ON t1.id = t3.id AND t2.second_id = t3.second_id
WHERE t3.id IS NULL

演示

可以使用INSERT IGNORE代替LEFT JOIN 由於(id, second_id)是主鍵,因此在插入時重復項將被忽略。

INSERT IGNORE INTO yourTable (id, second_id)
SELECT DISTINCT t1.id, t2.second_id
FROM yourTable AS t1
CROSS JOIN yourTable AS t2

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM