MySQL从数据库中删除行

MySQL从数据库中删除行,mysql,delete-row,sql-delete,Mysql,Delete Row,Sql Delete,我正在存储一个简单的标记关系,我想知道删除标记的更好方法是什么 我知道的两种方式: 从内容标签中选择标签,其中 内容id=10 使用php将结果与 提供的新标签以及是否有 数据库中是否有任何标记 不在新标记中的结果, 对该标记运行删除查询 其余的标签要么是新的 或者已经存在,所以我使用INSERT 进入内容标签。。。重复 密钥更新 或者简单地说: 从内容中删除\u从标记中删除标记 其中content_id=10 插入每个标签(无需在上使用 此处的重复密钥更新为 此内容id的标记为 (此时已删除)

我正在存储一个简单的标记关系,我想知道删除标记的更好方法是什么

我知道的两种方式:

  • 从内容标签中选择标签,其中 内容id=10
  • 使用php将结果与 提供的新标签以及是否有 数据库中是否有任何标记 不在新标记中的结果, 对该标记运行删除查询
  • 其余的标签要么是新的 或者已经存在,所以我使用INSERT 进入内容标签。。。重复 密钥更新
  • 或者简单地说:

  • 从内容中删除\u从标记中删除标记 其中content_id=10
  • 插入每个标签(无需在上使用 此处的重复密钥更新为 此内容id的标记为 (此时已删除)

  • 我目前正在使用第一种方法,但第二种方法似乎没有那么麻烦。但我不确定以这种方式使用delete是“不好”还是效率低下。或者,如果你有更好的方法,请随意分享

    您可以将第一个方法调整为不插入已经存在的标记。但是它可能(也可能会)仍然会产生比第二种方法更多的查询,特别是如果将这些insert语句组合到一个查询中

    //小例子:)


    我更担心删除记录,也许你误解了我?例如,假设您为内容id 10存储了标记id 1,3,5,7,9。现在我去更新标签并删除3和5,所以标签id现在是1,7,9。所以我当然需要删除标签3和5,但我需要使用php来比较它们,因为删除所有标签1,3,5,7,9,然后插入1,7,9就更容易了。我只是想知道这样做对数据库是否有害?@Joker,我认为这无关紧要。数据库基本上是为这些类型的操作而创建的。因此,我认为您不必担心通过常规查询来做对数据库有害的事情。如果您开始通过文件操纵来操纵数据库,那么您应该开始担心损坏数据库。感谢您的确认,我现在将使用第二种方式:
    INSERT INTO content_tags
    (content_id, tag_id)
    VALUES
    (1,1),
    (1,2),
    (1,3);