mysql - 如何插入/更新可能基于不同记录的存在而存在的关系记录

标签 mysql database insert sql-update

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/

相关文章:

mysql - 表单选择存储 ID 而不是 NAME

java.sql.SQLException : Access denied for user '' @'localhost' (using password: NO) with Spring+JPA+ MySql 异常

php - 无法在数据库中插入必填字段

Mysql查询获取一个表的行作为另一个表的列,列名来自第三个表

mysql - 无法创建约束键

ruby-on-rails - 是否可以在散列中间插入一个新项目并重新编制索引?

MySQL LAST_INSERT_ID() 由于 AUTO_INCRMENT 而未更新

php - 修改 Laravel 中的用户表

ios - Mysql blob图像在UiImage swift 3中的显示

php - 数据库设计 | PHP-Mysql | JSON