sql 按 2 列排序,一列手动,一列升序

sql order by 2 columns, one manual and one asc

我正在尝试通过从另一个 table 中选择两列来插入 table。我想先按第一列手动排序(青铜、白银然后是金),然后按升序按第二列排序。我找到了一个已回答的问题,它允许我按 bronze/silver/gold 对排名进行排序,或者我可以对数字列进行排序,但我无法让它同时执行这两项操作。

这就是我用 bronze/silver/gold 订购它的方式:

-- The Code:
drop table test5;
drop sequence id5_seq;

create table test5 
(id_num number primary key, 
ranks varchar(20), 
numbers number);

create sequence id5_seq
minvalue 1
maxvalue 10000
start with 1
increment by 1
nocycle;

create or replace trigger auto_test5_id
before insert on test5
for each row
begin
:NEW.id_num := id5_seq.nextval;
end;
/
insert into test5(ranks,numbers) (select distinct ranking,numbering from temp1 where ranking is not null) order by case
when ranking = 'Bronze' then 1 
when ranking = 'Silver' then 2
when ranking = 'Gold' then 3
else 4
end
;

select * from test5;


-- The Results:

Table TEST5 dropped.


Sequence ID5_SEQ dropped.


Table TEST5 created.


Sequence ID5_SEQ created.


Trigger AUTO_TEST5_ID compiled

14 rows inserted.


    ID_NUM RANKS                   NUMBERS
---------- -------------------- ----------
         1 Bronze                       32
         2 Bronze                       80
         3 Bronze                       16
         4 Bronze                      160
         5 Bronze                        8
         6 Bronze                      190
         7 Silver                        4
         8 Gold                        190
         9 Gold                         94
        10 Gold                         32
        11 Gold                          8
        12 Gold                         80
        13 Gold                         64
        14 Gold                         16

 14 rows selected 

我的目标是让最终结果看起来像这样:

    ID_NUM RANKS                   NUMBERS
---------- -------------------- ----------
         1 Bronze                        8
         2 Bronze                       16
         3 Bronze                       32
         4 Bronze                       80
         5 Bronze                      160
         6 Bronze                      190
         7 Silver                        4
         8 Gold                          8
         9 Gold                         16
        10 Gold                         32
        11 Gold                         64
        12 Gold                         80
        13 Gold                         94
        14 Gold                        190

我正在使用 SQL 开发人员 Oracle 11g。 谢谢大家的帮助和时间:)

add numbering field , 不知道用oracle的插入语法

insert into test5(ranks,numbers)
select distinct ranking,numbering from temp1 where ranking is not null  order by (case
when ranking = 'Bronze' then 1 
when ranking = 'Silver' then 2
when ranking = 'Gold' then 3
else 4
end)
   , numbering -- to sort asc