duanao2688 2016-08-16 06:33
浏览 117
已采纳

错误代码:1093。您无法在FROM子句中为更新指定目标表'mm'

i google this question several time but failed to fix mentioned issue. please help me.

My query:

UPDATE meter As mm SET mm.mdi_reset_date='2', mm.write_mdi_reset_date='1'
            WHERE mm.msn IN (SELECT m.msn
            FROM meter m
                INNER JOIN connection con ON con.feeder_id = m.feeder_id
                INNER JOIN consumers co ON co.consumer_id = con.customer_id 
                INNER JOIN customer cs ON co.parent_id = cs.customer_id 
                INNER JOIN cs_group_details cd ON cd.customer_id=cs.customer_id 
                WHERE co.batch_no = '30'
            AND cd.cs_group_id='4');
  • 写回答

1条回答 默认 最新

  • dongqiang2358 2016-08-16 06:48
    关注

    First Create temporary table using query

    CREATE TABLE meter_temp LIKE meter;
    

    Now insert data from meter to temporary table meter_temp

    INSERT INTO meter_temp SELECT * FROM meter;
    

    Use your update query

    UPDATE meter As mm SET mm.mdi_reset_date='2', mm.write_mdi_reset_date='1'
                WHERE mm.msn IN (SELECT m.msn
                FROM meter_temp m
                    INNER JOIN connection con ON con.feeder_id = m.feeder_id
                    INNER JOIN consumers co ON co.consumer_id = con.customer_id 
                    INNER JOIN customer cs ON co.parent_id = cs.customer_id 
                    INNER JOIN cs_group_details cd ON cd.customer_id=cs.customer_id 
                    WHERE co.batch_no = '30'
                AND cd.cs_group_id='4');
    

    Let me know if it is working or not.

    Edited ::

    $subQuery = "SELECT m.msn FROM meter_temp m INNER JOIN connection con ON con.feeder_id = m.feeder_id INNER JOIN consumers co ON co.consumer_id = con.customer_id INNER JOIN customer cs ON co.parent_id = cs.customer_id INNER JOIN cs_group_details cd ON cd.customer_id=cs.customer_id WHERE co.batch_no = '30' AND cd.cs_group_id='4'";
    $result = mysqli($con,$query); // assuming you are using mysqli. change as per your code
    while($row = mysqli_fetch_assoc($result))
    {
       $msnArray[] = $row['msn'];
    }
    $msn = implode(",",$msnArray); // assuming msn is integer and not string.
    // if it is string then you have to wrap it in quotes.
    // Now run update query
    $update = "UPDATE meter SET mdi_reset_date='2', write_mdi_reset_date='1' WHERE msn IN ({$msn})";
    $updateResult = mysqli_query($con,$update);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?