zoukankan      html  css  js  c++  java
  • update语句 #1093错误 看mysql与mssql的区别

    今天为了一项需求 在mysql里写了一个复合update语句:

    UPDATE uchome_feed SET title_template =
    SELECT title_templateFROM uchome_feedWHERE feedid =1 )
    WHERE feedid =2


    这个是我按mssql的思路写的,因为我一直认为mssql和mysql在语法上区别很小,

    而且这基本的update复合语句我自认是不会写错,

    可是结果很让我意外。这条执行语句在mssql里面执行没有任何问题,

    但是在mysql里却出现了 1093错误,

    我百思不得其解,求助google.

    答案让我非常差异。

    难道这就是免费数据库的区别?BUG?

    网上的解释:原因是不能根据select一个表得到的条件,来同时update这个表。

    于是我换了一种写法

    create table tmp as (select * FROM uchome_feed WHERE feedid =1 );

    update uchome_feed SET title_template = 
    (
    SELECT title_template FROM tmp WHERE feedid =1 ) WHERE feedid =2;

    drop table tmp;


    执行成功了。。。大汗。。。只有临时表可以解决这种问题。。。



  • 相关阅读:
    (Beta)Let's-Beta阶段展示博客
    (Beta)Let's-M2后分析报告
    (Beta)Let's-版本测试报告
    (Beta)Let's-版本发布说明
    团队作业Week14
    Daily Scrum 12.20
    Daily Scrum 12.19
    Daily Scrum 12.18
    Daily Scrum 12.17
    最后一次作业
  • 原文地址:https://www.cnblogs.com/tianxin2001x/p/1624608.html
Copyright © 2011-2022 走看看