mysql如何对行进行排序,使其看起来像这样(例如1 2 1 2)

mcvgt66p  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(310)

这个问题在这里已经有答案了

mysql-如何通过交替(1,2,3,1,2,3,1,2,3,)行对结果排序,可能吗(5个答案)
去年关门了。
假设我有一个值为a和b的列字。例如:

Row Word
1   A
2   A
3   A
4   B
5   B
6   B

我想在mysql中这样分类:

Row Word
1   A
2   B
3   A
4   B
5   A
6   B

如果我使用ms sql

SELECT Word FROM Test
ORDER BY row_number() OVER (PARTITION BY Word ORDER BY Word), Word

如何在mysql中编写这样的代码?

46qrfjad

46qrfjad1#

我在mysql 8中找到了一个解决方案。我的table是这样的:

我的sql代码是

SELECT Word
    FROM test
    ORDER BY ROW_NUMBER() OVER (PARTITION BY Word ORDER BY Word), Word;

所以这个表是这样排序的:

我在下面找到了一个代码,但它不能正确地提供订单。

SELECT 
    x.Word 
FROM
    (Select 
                t.Word,
                CASE
                    WHEN @word != t.Word THEN @rownum := 0
        WHEN @word = t.Word THEN @rownum := @rownum + 1
        ELSE @rownum
                END AS rutbe,
                @word := t.Word
            From 
                test t, (SELECT @rownum := 0, @word ORDER BY @word) r
    ) x
ORDER BY x.rutbe, x.Word

相关问题