【发布时间】:2012-05-11 03:52:45
【问题描述】:
我怎样才能order by破折号?
比如我下面有这些数据,
page_id url
1 - a
2 - b
3 --- c
4 --- d
5 - e
6 - f
7 -- g
8 -- h
我追求的结果,
page_id url
1 - a
2 - b
5 - e
6 - f
7 -- g
8 -- h
3 --- c
4 --- d
如果我这样做,
ORDER by x.url ASC
我还是明白了,
page_id url
1 - a
2 - b
3 --- c
4 --- d
5 - e
6 - f
7 -- g
8 -- h
有什么想法吗?
编辑:
我的实际 SQL,
SELECT
*,
IF(grandparentURL REGEXP '^[a-z0-9\-]+$', CONCAT('--- ', url), IF(parentURL REGEXP '^[a-z0-9\-]+$', CONCAT('-- ', url), CONCAT('- ', url))) AS url
FROM
(
SELECT
p.page_id,
p.url,
p2.url AS parentURL,
p3.url AS grandparentURL
FROM page AS p
LEFT JOIN page AS p2
ON p.parent_id = p2.page_id AND p.page_id != p2.page_id
LEFT JOIN page AS p3
ON p2.parent_id = p3.page_id AND p2.page_id != p3.page_id
WHERE IF('5' REGEXP '^[0-9]+$', p.page_id != '5', p.page_id IS NOT NULL)
AND p.url != 'cms'
) x
ORDER by x.url ASC
【问题讨论】:
-
你是如何定义你的列的?我根本没有得到这个结果。我得到你想要的。见这里:sqlfiddle.com/#!2/51638/1
-
@MikeRyan - 我不知道,请查看我的编辑以了解我的实际查询。谢谢。
-
@pst - 我在
MyISAM和utf8_general_ci -
再次,使用您的查询并使用
utf8-general-c1排序规则定义您的列,我得到了您想要的:sqlfiddle.com/#!2/79873/1 版本是什么?我不明白为什么会出错。
标签: php mysql sql sql-order-by