【问题标题】:confused by insert on duplicate key update对重复键更新插入感到困惑
【发布时间】:2009-06-12 04:05:05
【问题描述】:

我正在尝试实现一个 3 表项标记系统

表:项目
列:ItemID (primary, auto_increment), Title, Content

表格:标签
列:TagID (primary, auto_increment), Title, TagCount

表:ItemTag
列:ItemID、TagID

标签的每个标题都是唯一的。
我想实现一种插入标签表的有效方法:
1.检查Title是否存在
2.如果存在,更新TagCount+1
3.如果不存在则插入

我查看了 INSERT ON DUPLICATE KEY UPDATE,但我很困惑是否可以应用它,因为我的键是 TagID 而不是 Title。

【问题讨论】:

  • 问题 1:Item.Title 和 Tag.Title 持有不同的值吗?问题2:TagCount不应该在ItemTag表上,主键在(ItemID,TagID)上吗?
  • Q1:不同的值 Q2:TagCount 是给定 Tag 的 ItemTag 数量。我想存储它只是为了提高效率。

标签: mysql


【解决方案1】:

我假设您正在尝试插入表“标签”。

你需要修改表格并在标题字段上添加唯一索引:

alter table tag add unique index title(title);

然后,您可以执行以下操作

insert into tag (Title, TagCount) values ('blah',1)
on duplicate key update TagCount = TagCount + 1;

希望这对你有用。

【讨论】:

    【解决方案2】:

    您可能想要做的是使标签中的“标题”字段唯一。

    如果你这样做,那么你可以这样做:

    INSERT INTO Tag (Title, TagCount) VALUES ('<value>', 1)
    

    在重复键更新 TagCount = TagCount + 1;

    【讨论】:

      猜你喜欢
      • 2019-05-10
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 2020-08-21
      相关资源
      最近更新 更多