MySQL从数据库中删除行

时间:2011-02-10 06:39:01

标签: mysql delete-row sql-delete

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

我知道的两种方式:

  1. SELECT tag FROM content_tags WHERE content_id = 10
  2. 使用php比较结果     提供的新标签,如果有的话     是数据库中的任何标签     结果不在新标签中,     对该标记运行删除查询
  3. 其他标签都是新的     或者已经存在,所以我使用INSERT     INTO content_tags ... ON DUPLICATE     关键更新
  4. 或者简单地说:

    1. DELETE FROM content_tags FROM tags WHERE content_id = 10
    2. 插入每个标签(无需使用ON DUPLICATE KEY UPDATE在这里作为 此content_id的标签是 已经删除了这一点)
    3. 我目前正在做第一种方法,但第二种方式似乎不那么麻烦了。但我不确定以这种方式使用删除是“坏”还是低效。或者,如果您有更好的方法,请随时分享。

1 个答案:

答案 0 :(得分:0)

您可以调整第一种方法,也不要对已存在的标记进行插入。但是它可能(并且可能会)导致比第二种方法更多的查询,特别是如果你在单个查询中组合这些插入语句。

//小例子:)

INSERT INTO content_tags
(content_id, tag_id)
VALUES
(1,1),
(1,2),
(1,3);