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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab