在mssql中正常,我改为mysql后,发现无效,脚本是这样的update TUser set userage = '24' where usermemo ='aaa' 
and userid=(select max(userid) from TUser where username = 'aa')我若把(select max(userid) from TUser where username = 'aa')改为一个数值要正常的了,比如改为10,
而我单独查询select max(userid) from TUser where username = 'aa'也正常,也能得到一个数值,可是当联合起来后,居然出错了.感觉应该没什么问题啊,对mysql接触不久,请各位大虾指教。

解决方案 »

  1.   

    update TUser,(select max(userid) userid from TUser where username = 'aa') TUser1 set TUser.userage = '24' where TUser.usermemo ='aaa' 
    and TUser.userid=TUser1.userid
    试试这条;
      

  2.   

    就是一个简单的表啊,
    CREATE TABLE `TUser` (
    `userid`  bigint UNSIGNED NULL AUTO_INCREMENT ,
    `username`  varchar(255) NULL ,
    `userage`  varchar(255) NULL ,
     PRIMARY KEY (`userid`)
    )
    ;
    更新一个表的某一字段值,where条件中,指定的某条件的值,要用查询得来的。
    表中添加几条数据,username值为aa的要不少于两条
    主题中的查询语句改为下面的吧,好看点。
    update TUser set userage = '24' where  userid=(select max(userid) from TUser where username = 'aa')
      

  3.   

    MYSQL不支持在UPDATE后出现相同的表名在子查询中。改为如下格式。 另外建议提问时将你的错误信息一并贴出。update TUser a inner join (select max(userid) as userid from TUser where username = 'aa') b on a.userid=b.userid
    set a.userage = '24' 
    where usermemo ='aaa' 
      

  4.   

    语法不允许where里有子查询
    select max(userid) from TUser where username = 'aa' into @temp;
    update TUser set userage = '24' where usermemo ='aaa' and userid=@temp;
      

  5.   


    update TUser,(select max(userid) userid from TUser where username = 'aa') TUser1
    set TUser.userage = '24' where TUser.userid=TUser1.userid2楼的sql 楼主有试过吗?