【发布时间】:2014-05-26 17:35:36
【问题描述】:
很久以前我请HERE帮忙整理表格。并且用户“piotrm”给出了一个很好的解决方案,感谢他!效果很好!
SELECT @p:=0, @parent:=0;
UPDATE page p1
JOIN
( SELECT title,
CASE WHEN @parent<>parent_id THEN @p:=0 ELSE @p:=@p+1 END as position,
@parent:=parent_id as parent_id
FROM page
ORDER BY parent_id, title DESC ) p2
ON p1.title = p2.title AND p1.parent_id = p2.parent_id
SET p1.position = p2.position
现在我需要使用自然排序升级此代码。我的意思是它仍然需要以相同的方式排序,但是当它满足以 '2'、'13'、'1'、'26' 开头的 TITLE 时,它必须被排序为 NOT '1'、'13'、' 2', '26';但是'1'、'2'、'13'、'26'。
对于缺乏 SQL 知识,我深表歉意,但我真的需要你的帮助!非常感谢!
【问题讨论】:
-
piotrm,你能帮忙吗?我真的被这个=(
标签: mysql sorting loops select natural-sort