将排序值从一个MySQL表插入另一个表

时间:2015-08-16 16:46:34

标签: mysql

我有两个表,average_tableposition_table。它们各有两列。我想将排序后的数据从average_table复制到position_table,如下所示

average_table看起来像这样

std_id       avr
001          23.4
002          34.7
003          13.9
004          56.8

然后position_table应如下所示:

std_id      avr
004         56.8
002         34.7
001         23.4
003         13.9

当我使用以下sql查询时,average_tableposition_table之间的结果没有区别。有人可以帮帮我吗?

try {
    String str = "insert into POSITION_TABLE select * from AVERAGE_TABLE ORDER BY avr DESC";
  rs = st.executeQuery(str);
}
catch(SQLException ce){System.out.print(ce)}

2 个答案:

答案 0 :(得分:2)

在SQL世界中,行并未真正排序。可能有一种方法可以在MySQL中执行此操作(在SQL服务器中,我认为群集可能会这样做 - 但出于另一个原因,而不是按顺序获取行)。

换句话说,插入的行不保证具有特定的顺序。由于SQL是声明性的,因此您必须在查询时声明如何对其进行排序。

我不明白你要用position表来实现什么 - 对我而言,它看起来像是average表的完全重复,你得到排序的数据已使用您的查询使用订单。只需在需要订购数据时使用订单。

答案 1 :(得分:1)

create table average_table
(   std_id int not null,
    avr decimal(8,2) not null
);
insert average_table (std_id,avr) values (1,23.4),(2,34.7),(3,13.9),(4,56.8);

create table position_table
(   id int auto_increment primary key,
    std_id int not null,
    avr decimal(8,2) not null
);

insert into position_table(std_id,avr) select std_id,avr from average_table order by avr desc;

select * from position_table;
+----+--------+-------+
| id | std_id | avr   |
+----+--------+-------+
|  1 |      4 | 56.80 |
|  2 |      2 | 34.70 |
|  3 |      1 | 23.40 |
|  4 |      3 | 13.90 |
+----+--------+-------+