通过检查特定列来插入数据并避免重复

时间:2016-09-27 17:35:01

标签: sql duplicates mariadb insertion

我有一个本地数据库,我正在尝试插入多行数据,但我不想重复。我没有我想要插入的第二个数据库。我有一个sql文件。这个结构就是我插入的db:

(db)artists
    (table)names->     ID  |  ArtistName  |  ArtistURL  |  Modified

我正在尝试插入此内容:

INSERT names (ArtistName, Modified) 
VALUES (name1, date),
       (name2, date2),
       ...
       (name40, date40)

问题是,如何通过检查我希望使用SQL插入的数据列表的特定列来插入数据并避免重复?

2 个答案:

答案 0 :(得分:0)

重复什么?名字重复?重复行?我假设没有重复ArtistName

  1. 桌面上有UNIQUE(ArtistName)(或PRIMARY KEY)。
  2. 使用INSERT IGNORE代替IGNORE
  3. (否LEFT JOIN等)

答案 1 :(得分:0)

我最后通过将所有值插入到一个全新的表中来了解@Hart CO的建议。然后我使用了这个SQL语句:

SELECT ArtistName
FROM testing_table
WHERE !EXISTS 
(SELECT ArtistName FROM names WHERE 
testing_table.ArtistName = testing_table.ArtistName)

这给了我所有的艺术家名字,这些名字都在我的数据中,而不在名单表中。 然后我导出到一个sql文件并稍微调整INSERT以插入带有相应数据的names表中。

INSERT IGNORE INTO `names` (ArtistName) VALUES
*all my values from the exported data*

其中(ArtistName)可以返回任何数据。例如, (ArtistName,ArtistUrl,Modified)。只要从导出返回的值有3个值。

这可能不是最有效的,但它适用于我想要做的事情。