mysql - Mysql,根据select的条件插入
问题描述
我需要根据行数的选择比较和该行的值来执行复杂的查询。这里我想做的是: - 从表“媒体”中选择所有具有特定“post_id”的媒体 - 检查所有行是否将“media_status”设置为活动 - 如果是,则在表“媒体”中更新“posts_status”的值“积极的”
是否可以在一个查询中完成?
async.waterfall([
function download(next) {
// pick media
},
function transform(response, next) {
// transcode media
},
function upload(next) {
// upload transcoded
},
function clean(response, next) {
// clean temp
},
function connectDb(next) {
// connect to db
},
function saveDb(next) {
// save single media
},
function conditionalNotification(next) {
// HERE I NEED TO CHECK IF ALL MEDIA ARE TRANSCODED AND SET POST_STATUS ACTIVE
}
...
解决方案
您可以通过执行此单个查询来做到这一点
update `media` set post_status='active'
where 1=((select count(*) from `media`
where post_id = <id value>)=
(select count(*) from `media`
where post_id = <id value> and media_status='active'))
推荐阅读
- android - 无法与 UDP 绑定
- neo4j - 具有类型项目集的图形数据库建模
- batch-file - 如何计算批处理脚本中特定文件的哈希值?
- javascript - 如何在 React 中使用 Material-UI 在 onFocus 事件的 Textfield 中选择部分文本?
- mysql - 如何检查 3 个字段在 MySQL 中是否唯一?
- android - 使用自定义令牌登录后无法在 firebase 中设置和更新值
- python - FPDF 只写入一行
- r - 如何使用 R 将包含用“,”分隔的数字的文本列写入 .csv 文件
- mysql - 如果 null 值子查询返回 null
- swift - IF 条件下的逗号与 &&