A 有一个将标签与照片相关联的关系表:
table: tag_photo_x
photo_id
tag_id
status
PRIMARY INDEX: photo_id,tag_id
我正在将一些标签合并在一起,因为它们非常相似(即:风景、风景)。因此,一张照片可能已经有也可能没有这两个标签的记录。
在此示例中,我想使用 1 个查询来遍历标签“landscapes”的所有关系,并插入“landscape”的记录。
我的问题是,我无法理解如何编写一个查询,该查询将根据“景观”记录的存在和“重复键”插入“景观”记录,更新状态= 1 .
我有很多照片和标签需要执行此操作,因此需要尝试在单个查询中执行此操作。
最佳答案
如果您想在有landscape
的地方插入landscape
,那么只需执行insert
即可:
insert into tag_photo_x(photo_id, tag_id)
select photo_id, 'landscape'
from tag_photo_x tp
where tag_id = 'landscapes' and
not exists (select 1
from tag_photo_x tp2
where tp.photo_id = tp2.photo_id and
tp2.tag_id = 'landscape'
);
如果愿意,您可以删除 landscapes
标签。
关于mysql - 如何插入/更新可能基于不同记录的存在而存在的关系记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28585112/