进行查询以将所有内容从一个表复制到另一个表ORDERING BY

时间:2013-04-01 20:02:42

标签: mysql sql sql-order-by

我很好奇如何使用与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

最简单的方法是什么?

另外,对于大表最快的查询我会很有趣(虽然性能对我来说并不那么重要)。

2 个答案:

答案 0 :(得分:2)

喜欢这个吗?

CREATE TABLE b SELECT col FROM a ORDER BY col

请注意,no way可以保证数据库中的行顺序(物理上除外)。您必须始终使用ORDER BY

Reference

答案 1 :(得分: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