1
我有一個一對多的表(實際上應用程序實際上會使用多對多,但這與我的問題無關)。假設兩列具有以下值:用新值更新聯結表
c1 c2
2 3
4 1
4 3
4 4
6 4
對於4給定的C1值,我想在陣列與C2的值來更新表[1,2,4,6]。因此,我的表現在如下(注意記錄4,2和4,6被添加,記錄4,3不再存在,記錄4,1和4,4保持不變):
c1 c2
2 3
4 1
4 2
4 4
4 6
6 4
完成此操作的最佳方法是什麼?我「可以」首先查詢數據庫以選擇c1 = 4的現有值,然後使用array_intersect()
來識別添加和刪除的記錄,並根據需要插入/刪除,但這看起來過多。
也許我錯過了一些東西,但爲什麼不刪除行,其中c1 = 4,並根據您的數組插入記錄?而不是試圖找出哪些行存在,丟失或存在不同的值。 – SQLChao
@趙超。是的,那是另一種選擇。是否推薦?什麼是對索引的影響? – user1032531
確實可能導致碎片。我想這取決於這種類型的操作將會發生的頻率,索引的大小。對不起,我一開始就在考慮一次性操作。 – SQLChao