如何 INSERT/UPDATE 根据不同记录的存在可能存在的关系记录

How to INSERT/UPDATE a relational record that may exist based of the existence of a different record

A 有一个关系 table,它将标签与照片相关联:

table: tag_photo_x
photo_id
tag_id
status

PRIMARY INDEX: photo_id,tag_id

我正在将一些标签合并在一起,因为它们非常相似(即:风景、风景)。因此,一张照片可能已经或可能没有记录这两个标签。

在此示例中,我想使用 1 个查询来遍历标签 'landscapes' 的所有关系并为 'landscape' 插入一条记录。

我的问题是我不知道如何编写一个查询,该查询将根据 'landscapes' 记录和 [=26= 的存在插入 '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 标签。