你update的时候where子句是什么?没有事先得到id吗?
用一个语句肯定是不行的。
但是,先 update atable where xxx...
      再 insert into btable values( (select id from atable where xxx...),...)
虽然是两句也不是太麻烦

解决方案 »

  1.   

    但是你要能保证where xxx...出来的只有一个id。
      

  2.   

    ID是唯一的,我想你更新时肯定有一个条件,这个条件基本上也就是这个唯一的id字段了吧,要不你就是一个组合条件了,那应该是查询得到select id * where(.....)
      

  3.   

    to:helloyou0你的insert into btable values( (select id from atable where xxx...),...)语句中SELECT语句可以直接作为数据插入btable吗?我想应该不行吧?是的,我的目的就是要取得这个ID,但我不想再次select,再mysql_query(),最后mysql_fetch_array,这么麻烦去取得,想知道有没有一个语句可以实现。
      

  4.   

    mysql_affected_rows() 返回最近一次与 连接句柄 关联的 INSERT,UPDATE 或 DELETE 查询所影响的记录行数。
      

  5.   

    上面函数只能返回数量
    -----------
    给你一个思路 绝对可行
    在更新前 你应该已经得到了需要更新的记录的id
    将该id保存到一个变量中 update成功后在插入另一个表PHOTO中
      

  6.   

    楼上的思路可能不是楼主想要的。
    你提出的 “你应该已经得到需要更新的记录的id”正是楼主想要用select取出的。而他却想将这一步与后面的update整合。基本上楼主只能分两步写了。一步是不行了。
      

  7.   

    你的insert into btable values( (select id from atable where xxx...),...)语句中SELECT语句可以直接作为数据插入btable吗?我想应该不行吧?
    -------------------------------------------------
     这样是可以的,当然一个是mysql版本要支持(不清楚从哪个版本起支持,但4.1是支持的),另外一个是子查询的atable不可以和btable是同一个table(目前还不支持同一个表做子查询),而且子查询返回的必须只有一条记录,和需要插入的字段类型一致,否则需要转换
    -------------------------------------------------是的,我的目的就是要取得这个ID,但我不想再次select,再mysql_query(),最后mysql_fetch_array,这么麻烦去取得,想知道有没有一个语句可以实现。----------------------------------
    如果你的mysql版本不够,可能唯一的方法是php里操作一下。