1

在我的 MySQL 数据库中建立多对多关系的目标中,我已经到达了另一个要构建的桥梁。

当前表:
用户 (id, name)
标签 (id, name)
User_Tags (user_id, tag_id)

这是目标:
我希望能够获取标签,即:#fb并将其插入我的Tags数据库中,该数据库具有唯一约束name,如果标签存在,我想返回它id

我想将tag.id和当前用户的user.id插入到User_Tags. 我对表格没有任何独特的约束,User_Tags因为我希望能够跟踪用户最常用的标签并将它们呈现在按使用频率排序的列表中。

我目前正在使用准备好的语句在 PHP 中开发这个项目。
此外,性能目前不是问题,因为我的用户数量仍然相当少,但它正在稳步增长,将来可能会成为问题。

4

1 回答 1

3

您可以使用 MySQL 的ON DUPLICATE KEY UPDATELAST_INSERT_ID(expr)来获取标签 id,无论它是已插入还是已经存在,例如

INSERT INTO
  Tags
  (name) 
VALUES
  (:name)
ON DUPLICATE KEY UPDATE
  id = LAST_INSERT_ID(id)

INSERT INTO
  User_Tags
  (user_id, tag_id)
VALUES
  (:userid, LAST_INSERT_ID())
于 2010-05-09T07:34:47.257 回答