mysql - Mysql - 如果整个相同的行已经存在,则在插入新行时忽略警告
问题描述
这是我在 stackoverflow 中的第一个问题,我不是以英语为母语的人。如果我问得不好,请多多包涵。
假设我有一个表,它_id
是一个主键。
| _id | value1 | value2 |
|-----|--------|--------|
| 1 | apple | banana |
| 2 | orange | melon |
我希望:
- 如果我尝试查询
INSERT INTO table_name (_id, value1, value2) VALUES (1, 'apple', 'banana')
,则不会发生任何事情,因为整行都是相同的。 - 如果我尝试查询
INSERT INTO table_name (_id, value1, value2) VALUES (2, 'apple', 'tomato')
,则会收到警告,因为至少存在一列不相等。
mysql中是否有任何简洁的语句,以便我可以做烂工作?
解决方案
您似乎想要一个唯一的索引_id
:
create unique index unq_table_id on table(_id);
然后,您将无法插入具有相同_id
. 如果您还希望这些索引是唯一的value1
,您可以创建唯一索引。value2
该行为与您指定的不完全一致。如果您尝试插入具有现有值的任何_id
行- 无论其他列中的值如何 - 都会发生错误。如果您愿意,可以使用insert ignore
或绕过错误。on duplicate key update
推荐阅读
- c - 使用while循环计算C中不包括空格的字符
- ruby-on-rails - Admin::DashboardController#index 中的 NoMethodError
- amazon-web-services - 用于快照备份自动删除的 AWS LifeCycle Manager
- django - Django-rest-auth:找不到“password_reset_confirm”的反向。'password_reset_confirm' 不是有效的视图函数或模式名称
- angular - “订阅”类型上不存在属性“管道”
- android - 带有子视图的卡片视图在 OnClickListener 内不起作用
- android - 活动启动一次后未启动
- sql - 扩展查询以包含父 ID
- sapb1 - 如何在 SDK、SAP B1 中添加具有 2 行基本文档的文档?
- apache-nifi - 如何在 https 上配置 apache nifi