1

我很好奇如何table2使用与 相同的数据创建相同的结构table1,但按列频率排序。

或者,这个问题的等价物是:正确更改表中行的id。

没关系,无论是通过 ASC 还是 DESC。

结果,table1

**id - name - frequency**

    1 - John - 33
    2 - Paul - 127
    3 - Andy - 74

应该变成table2

**id - name - frequency**

    1 - Paul - 127
    2 - Andy - 74
    3 - John - 33

最短的方法是什么?

此外,我会对大型表最快的查询感兴趣(尽管性能对我来说并不那么重要)。

4

2 回答 2

2

像这样?

CREATE TABLE b SELECT col FROM a ORDER BY col

请注意,没有办法保证数据库中的行顺序(除了物理上的)。您必须始终使用ORDER BY.

参考

于 2013-04-01T20:04:13.867 回答
1

为此,您需要创建新的 ID。这是一种 MySQL 方法:

create table table2 as
    select @rn := @rn + 1 as id, name, frequency
    from table1 cross join (select @rn := 0) const
    order by frequency desc
于 2013-04-01T20:09:26.487 回答