熟悉php的mysql_query命令的每个人都知道,它不允许我们在一次调用中执行一个以上的查询(由;分隔符分隔)……
我的问题是,我不想在更新查询中定义一个用户变量,以便为每一行递增该变量(有点像自动递增)。它应该看起来像这样:
SET @t1=0;
UPDATE `mytable` SET `order` = (@t1:=(@t1+1)) ORDER BY `order` ASC;我的问题是,因为我不能定义我的变量然后进行更新,所以我找不到一种在查询中设置变量的方法。如果它是空的,我试着定义它:
... `order` = (IFNULL( @t1 := ( @t1 + 1 ) , @t1 := 0 )) ...但它不起作用,因为变量在它工作的每一行都会重置。
有没有熟悉mysql的人看到这是一个解决方案?提前谢谢。
发布于 2011-07-01 22:04:01
这是一个老问题,但不管怎样,这里有一个答案:
UPDATE `mytable` SET `order` = (@t1 := IFNULL(@t1, 0) + 1) ORDER BY `order` ASC;如果@t1没有值,则IFNULL(@t1, 0)返回0;如果有值,则返回@t1的值。
因此,在第一行中,没有设置@t1,它将更新为order = (@t1 := 0 + 1),并且在后面的行中,@t1已经有了一个值,并且每行都加+1。
发布于 2009-03-01 13:50:59
您可以使用mysqli库,它允许在一个查询中使用
mysqli->multiple_query( string $querys);https://stackoverflow.com/questions/599832
复制相似问题