加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

php – 如何使用MYSQL UPDATE的表别名

发布时间:2021-03-05 18:48:56 所属栏目:MySql教程 来源:网络整理
导读:我必须使用PHP的mysql_query()函数更新mysql表.因此,我只需要在一个语句中发送以下UPDATE查询: SET @i = 0;UPDATE mytable SET id=(@i:=@i+1); 我已经阅读了一些示例,其中可以使用表别名的SELECT语句来完成此操作,例如: SELECT @rn:=@rn+1 AS rank,t1.* FR

我必须使用PHP的mysql_query()函数更新mysql表.因此,我只需要在一个语句中发送以下UPDATE查询:

SET @i = 0;

UPDATE mytable SET id=(@i:=@i+1);

我已经阅读了一些示例,其中可以使用表别名的SELECT语句来完成此操作,例如:

SELECT @rn:=@rn+1 AS rank,t1.* FROM (SELECT * FROM mytable) t1,(SELECT @rn:=0) t2

有没有办法将这些表别名与我需要使用的UPDATE语句一起使用?

编辑:

根据Topher Hunt的回答,我想我可以使用以下方法创建mytable的副本:

CREATE TABLE mytable_copy SELECT @rn:= @ rn 1 AS id,t1.* FROM(SELECT * FROM mytable)t1,(SELECT @rn:= 0)t2

然后DROP mytable和RENAME mytable_copy到mytable.

这个语句是否会创建mytable的精确副本,其中的字段类型和长度与mytable中的字段类型和长度相同?

最佳答案 为什么不删除此列并使用auto_increment添加新列作为主键?这将自动分配您需要的值.

ALTER TABLE mytable DROP COLUMN id;

ALTER TABLE mytable ADD ( id int AUTO_INCREMENT PRIMARY KEY );

-or- as you requested...

UPDATE mytable
  JOIN (SELECT @xxx := 0) AS v1 
   SET id = (@xxx := @xxx + 1)
;

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读