【问题标题】:Avoid indirect duplicates in mysql table避免mysql表中的间接重复
【发布时间】:2011-12-21 16:28:10
【问题描述】:

我不是指两个完全相同相同的行。

我的表的简单结构是这样的:

id val1 val2

val1 和 val2 用于将两个对象链接在一起,我不知道哪个是哪个,因为它们引用了同一个表。

我需要避免以下情况:

编号 val1 val2 1 40 60 2 60 40

我可以使用 INSERT IGNORE 来避免直接重复,但它不适用于上面的那个。

我也在尝试避免来自 PHP 的多个查询,所以我想问是否可以在一个从 PHP 发送的 SQL 查询中执行此操作。

【问题讨论】:

  • 数据从何而来?
  • 这些值是用户 ID,被添加用于将玩家相互链接。

标签: php mysql


【解决方案1】:

插入时只检查是否val1 <= val2,如果是则按顺序插入,如果不切换。在这种情况下,您将始终确保重复值会导致相同的插入。

【讨论】:

    【解决方案2】:

    我会通过应用程序代码或数据库触发器强制解决此问题,以便您可以保证插入数据时 val1

    【讨论】:

      猜你喜欢
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 2013-01-14
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 2016-12-01
      • 2011-07-14
      相关资源
      最近更新 更多