【问题标题】:Insert Only distinct values for one column [closed]仅插入一列的不同值[关闭]
【发布时间】:2012-08-18 06:44:34
【问题描述】:
id   |   a   |      b      |
-----------------------------
1    |  xyz  |     abc     |

这是我的表的结构。id 列是AUTO_INCREMENT。 我只想在表中插入'b' 不是abc 的那些数据。 例如-

这不应该插入任何东西:

insert into table_name(`a`,`b`) values("xyz","abc");

但是这应该插入新记录:

也就是说,它应该只检查列b。

insert into table_name(`a`,`b`) values("xyz","zzzz");

我该怎么做?

【问题讨论】:

  • @tereško 你这是什么意思?我已经创建了正确的表格。
  • 如果表缺少UNIQUE约束,那么它是不正确的。
  • 不,它没有丢失。在发布问题之前我检查了三次
  • 请您发布“SHOW CREATE TABLE tableName”的输出吗?

标签: mysql insert unique-constraint distinct-values


【解决方案1】:

您可以在 column b 上添加 UNIQUE 约束

当插入重复值时,它会抛出一个 SQL 异常,而不是插入,你可以在 PHP 中处理这个异常

【讨论】:

  • 是的,我已将 b 列设置为唯一但仍插入相同的数据。
  • @ASHUTOSH 您能否发布表格结构,这将有助于我们了解您哪里出错了,还包括约束
【解决方案2】:

您的选择:
1.在 b 列的插入查询中使用 unique()
2.运行一个快速的 SELECT 查询来检查一个现有的列(最不喜欢的)它也可以用 if 子句嵌入到你的更新查询中

参考How to 'insert if not exists' in MySQL?

【讨论】:

  • 请提供一个在插入查询中使用unique() 的示例,我很感兴趣
猜你喜欢
  • 2015-12-01
  • 1970-01-01
  • 2013-06-22
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 2017-11-19
相关资源
最近更新 更多