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 次 |
| 最近记录: |