我在 MySQL 中具有以下结构,表“images_tags”:
id | image_id | tag_id
----------------------
1 | 243 | 52
2 | 94 | 52
3 | 56 | 52
4 | 56 | 53
5 | 56 | 54
表“标签”:
id | tag
---------------
52 | fashion
53 | cars
54 | sports
55 | bikes
我正在我的 CMS 中构建一个函数来删除标签,因为我需要将包含该标签的所有图片重新分配给另一个标签。问题是图片可能已经分配了新标签,我想避免可能的重复记录。
我找不到直接在 SQL 中执行此操作的正确方法,所以我在 PHP 中尝试如下:
$result=mysql_query("select image_id from images_tags where tag_id='".$oldtag."'");
while($row=mysql_fetch_assoc($result)){
$result2=mysql_query("select id from images_tags
where image_id='".$row['image_id']."' and tag_id='".$newtag."'");
if(mysql_num_rows($result2)==0){
mysql_query("update images_tags set tag_id='".$newtag."'
where image_id='".$row['image_id']."' and tag_id='".$newtag."'");
}
}
如您所见,由于我在迭代中运行查询,因此我的代码非常糟糕且效率低下。你知道更好的方法吗?最好只在一个 SQL 查询中。谢谢。