首页 > 解决方案 > 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 
            }             
            ...

标签: mysqlnode.js

解决方案


您可以通过执行此单个查询来做到这一点

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'))

推荐阅读