Mysql 设置顺序/位置-通过两个变量重置
我想问一下,这是否只能通过MySQL而不能通过php代码实现 我有一张桌子Mysql 设置顺序/位置-通过两个变量重置,mysql,sql,position,Mysql,Sql,Position,我想问一下,这是否只能通过MySQL而不能通过php代码实现 我有一张桌子 ID, CATID, Order 我知道我可以安排订单 SET @pos := 0; UPDATE products SET order = @pos :=@pos +1 ORDER BY order; 但是如何在每个catid上从0开始重置它 在php中,我可以选择每个catid,每次运行不同的sql 是否只有MySQL的解决方案 同时提出一个标题。我不知道怎么写:引入一个新变量@cat。与catid进行比较,并在
ID, CATID, Order
我知道我可以安排订单
SET @pos := 0; UPDATE products SET order = @pos :=@pos +1 ORDER BY order;
但是如何在每个catid上从0开始重置它
在php中,我可以选择每个catid,每次运行不同的sql
是否只有MySQL的解决方案
同时提出一个标题。我不知道怎么写:引入一个新变量@cat。与catid进行比较,并在catid更改时重置@pos
SET @pos := 0;
SET @cat:= 0;
UPDATE products p join
(
select id,
@pos:=if(@cat<>catid,0,@pos+1) as new_order,
@cat:=catid
from products
ORDER BY order
) p2 on p.id=p2.id
SET order = p2.new_order;
你能提供一些背景说明为什么这是必要的吗?可能有更好的方法来满足您的要求。不应该由cat_id订购也因为cat_id更改时,每次都会重置订单???我不知道您的表结构,所以不能说。如果您需要自定义订购,只需将必要的字段添加到“订购依据”