我需要使用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
然后删除mytable并将mytable_copy重命名为mytable。这个语句会创建一个与mytable完全相同的副本,其中的字段类型和长度与mytable中的字段类型和长度相同吗?