MySQL 提供了多種資料插入機制,讓您實現防止重複行的條件插入。
一個場景涉及名為 x_table 的表,其中包含實例、使用者和項目列,其中實例是唯一的。只有當使用者和專案的組合尚不存在時才將新行插入到x_table 中,請按照下列步驟操作:
如果您的MySQL 版本支援選擇在插入過程中從其他表中獲取,請考慮以下查詢:
INSERT INTO x_table(instance, user, item) SELECT 919191, 123, 456 FROM dual WHERE NOT EXISTS ( SELECT * FROM x_table WHERE user = 123 AND item = 456 );
在此查詢中,dual是單行表,可確保有效行的可用性,而NOT EXISTS 條件檢查是否有重複行。如果未找到符合項,則插入新行。
此外,MERGE 語句提供了條件插入的強大工具。其語法如下:
MERGE INTO x_table AS target USING ( SELECT 919191 AS instance, 123 AS user, 456 AS item ) AS source ON (target.user = source.user AND target.item = source.item) WHEN NOT MATCHED THEN INSERT VALUES (source.instance, source.user, source.item);
在這種情況下,USING 子句指定要插入的值,而 ON 子句建立符合條件。如果目標表(x_table)中不存在符合行,則執行 INSERT。
以上是MySQL插入資料時如何保證行唯一?的詳細內容。更多資訊請關注PHP中文網其他相關文章!