我如何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
答案 0 :(得分:1)
试试这个
ORDER BY SUBSTRING_INDEX(url, ' '),url
第一部分按字符串
中第一个空格的位置排序答案 1 :(得分:1)
按照......首先按照首先找到空间的位置进行MULTIPLE顺序...从那里开始,然后按整个URL排序。由于common -b和-a将在同一个分组中,它们的空间将它们保持在“1”组中...然后,从那里,整个URL将强制你的正确 - a,-b,-c等< / p>
ORDER BY INSTR('x.url', ' '), x.url