order by

根据order by指定的列,对结果排序。

New in version 2.00.5: order by 支持使用 select 所选字段改名前或改名后的名称。

New in version 2.00.9: order by 支持 nulls first/nulls last,语法如下:

$ order by col [asc | desc] [nulls first | nulls last]

asc | desc 指定按升序或降序对数据进行排序。若不指定,则默认为升序。

nulls first | nulls last 指定空值放在排序查询结果的最前面或最后面。注意,指定 nulls first/last 时,必须要指定 asc/desc。

例子

$ sym = `C`MS`MS`MS`IBM`IBM`C`C`C$SYMBOL
$ price= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29
$ qty = 2200 1900 2100 3200 6800 5400 1300 2500 8800
$ timestamp = [09:34:07,09:36:42,09:36:51,09:36:59,09:32:47,09:35:26,09:34:16,09:34:26,09:38:12]
$ t1 = table(timestamp, sym, qty, price);
$ t1;

timestamp

sym

qty

price

09:34:07

C

2200

49.6

09:36:42

MS

1900

29.46

09:36:51

MS

2100

29.52

09:36:59

MS

3200

30.02

09:32:47

IBM

6800

174.97

09:35:26

IBM

5400

175.23

09:34:16

C

1300

50.76

09:34:26

C

2500

50.32

09:38:12

C

8800

51.29

select * from t1 order by sym, timestamp;

timestamp

sym

qty

price

09:34:07

C

2200

49.6

09:34:16

C

1300

50.76

09:34:26

C

2500

50.32

09:38:12

C

8800

51.29

09:32:47

IBM

6800

174.97

09:35:26

IBM

5400

175.23

09:36:42

MS

1900

29.46

09:36:51

MS

2100

29.52

09:36:59

MS

3200

30.02

可使用”desc”关键字进行降序排序。

select * from t1 where sym in `C`IBM order by sym, timestamp desc;

timestamp

sym

qty

price

09:38:12

C

8800

51.29

09:34:26

C

2500

50.32

09:34:16

C

1300

50.76

09:34:07

C

2200

49.6

09:35:26

IBM

5400

175.23

09:32:47

IBM

6800

174.97

t = table(5 3 NULL NULL 1 6 8 as id, 1 2 3 4 5 6 7 as val)
select * from t order by id asc nulls last

id

val

1

5

3

2

5

1

6

6

8

7

3

4

t = table(5 3 NULL NULL 1 6 8 as id, 1 2 3 4 5 6 7 as val)
select * from t order by id asc nulls first

id

val

3

4

1

5

3

2

5

1

6

6

8

7