Aar*_*son 6 mysql insert upsert
我想做这个
INSERT INTO AdminAccounts (Name)
SELECT Name
FROM Matrix
Run Code Online (Sandbox Code Playgroud)
但我不想创建重复项。即,我几周前运行了它并且需要更新数据。
这将插入以前不在矩阵表中的新名称字段。
INSERT IGNORE
INTO AdminAccounts (Name)
SELECT Name
FROM Matrix;
Run Code Online (Sandbox Code Playgroud)
如果您不信任INSERT IGNORE
,还有一种替代方法,您可以在插入它们之前显示新的 Name 值:
CREATE TABLE NewName SELECT Name FROM Matrix WHERE 1=2;
INSERT INTO NewName
SELECT Name FROM AdminAccounts A
LEFT JOIN Matrix B USING (Name)
WHERE B.Name IS NULL;
INSERT INTO Matrix (Name) SELECT Name FROM NewNames;
Run Code Online (Sandbox Code Playgroud)
该表NewName
仅收集AdminAccounts
当前不在的那些表Matrix
。这可以让您有机会查看新名称。之后,您可以将所有内容NewName
插入到 Matrix 中。
INSERT INTO AdminAccounts
(Name)
SELECT t1.name
FROM Matrix t1
WHERE NOT EXISTS(SELECT id
FROM AdminAccounts t2
WHERE t2.Name = t1.Name)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
58382 次 |
最近记录: |