mysql - 我可以使用多个字段作为 MySQL 中的 IGNORE 限定符来执行 INSERT IGNORE 吗?

标签 mysql select insert indexing

我有一个 MySQL 表,如下所示:

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`company_id` int(8) unsigned NOT NULL,
`term_type` varchar(255) NOT NULL DEFAULT '',
`term` varchar(255) NOT NULL DEFAULT '',

我希望能够做到这一点......

INSERT IGNORE INTO table ( company_id, term_type, term )
VALUES( a_company_id, 'a_term_type', 'a_term' )

...但我希望在 company_id、term_type 和 term 的相同组合已经存在时忽略插入。我知道如果我在尝试插入重复值时在单个字段上有唯一索引,则插入将被忽略。有没有办法做我正在尝试的组合?我可以使用多列索引吗?

我试图避免在每次插入之前执行 SELECT 来检查此组合。因为我正在处理此表中的数亿行数据。

最佳答案

也许是这样的:

ALTER TABLE table ADD UNIQUE (company_id, term_type,term);

关于mysql - 我可以使用多个字段作为 MySQL 中的 IGNORE 限定符来执行 INSERT IGNORE 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10035085/

相关文章:

sql - 如何使用MS SQL 2008获取数据库中的表列表?

数据库 |从表格中选择月份和年份不是当前或员工 ID 的记录

java - 可以将 “literals”值与 “INSERT INTO”中的select语句组合

PHP 不会将数据插入 Mysql 数据库 - 不会引发错误

php - 查询两个表的问题

mysql - 如何将来自三个 Perl 数组的数据插入到单个 MySQL 表中?

mysql - SQL 查询 NOT IN 来自 3 个带条件的表

mysql - 使用三个带有 1000 多个条目的表进行 SELECT

java - 如何提高 Solr 性能?

php - 用于编辑信息的 cakephp 身份验证组件