如何 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
标签。
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
标签。