首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个查询中执行UPDATE和设置用户变量

问在一个查询中执行UPDATE和设置用户变量
EN

Stack Overflow用户
提问于 2009-03-01 13:38:32
回答 2查看 837关注 0票数 2

熟悉php的mysql_query命令的每个人都知道,它不允许我们在一次调用中执行一个以上的查询(由;分隔符分隔)……

我的问题是,我不想在更新查询中定义一个用户变量,以便为每一行递增该变量(有点像自动递增)。它应该看起来像这样:

代码语言:javascript
复制
SET @t1=0;
UPDATE `mytable` SET `order` = (@t1:=(@t1+1)) ORDER BY `order` ASC;

我的问题是,因为我不能定义我的变量然后进行更新,所以我找不到一种在查询中设置变量的方法。如果它是空的,我试着定义它:

代码语言:javascript
复制
... `order` = (IFNULL( @t1 := ( @t1 + 1 ) , @t1 := 0 )) ...

但它不起作用,因为变量在它工作的每一行都会重置。

有没有熟悉mysql的人看到这是一个解决方案?提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2011-07-01 22:04:01

这是一个老问题,但不管怎样,这里有一个答案:

代码语言:javascript
复制
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。

票数 3
EN

Stack Overflow用户

发布于 2009-03-01 13:50:59

您可以使用mysqli库,它允许在一个查询中使用

代码语言:javascript
复制
mysqli->multiple_query( string $querys);

http://us.php.net/mysqli_multi_query

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/599832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档