I have multiple columns I wish to order by.

I have columns:
# # # # (1, 2, 3, 4)
A 0 0 0 0
B 1 0 1 3
C 1 0 2 3

I want to ORDER BY 4, 3, 2, 1.

Syntax I am using:

"SELECT * FROM table ORDER BY 4, 3, 2, 1"

Note: I am not sure wether to use ASC or DESC - or even if I have to use it.

Thanks, Regards X

Recommended Answers

All 5 Replies

Order by multiple columns work this way.
For example, you have 4 records.

field1 | field2 | field3 | field4
-------+-------+--------+----------
1 | 1 | 2 | 4
-------------------------------------
2 | 2 | 100 | 5
-------------------------------------
3 | 2 | 1 | 3
-------------------------------------
4 | 3 | 500 | 6
-----------------------------------
5 | 2 | 1 | 2

If your query is,

$query = "select * from table order by field2,field3,field4";

the result would be,

field1 | field2 | field3 | field4
-------+-------+--------+----------
1 | 1 | 2 | 4
-------------------------------------
5 | 2 | 1 | 2
---------------------------------------
3 | 2 | 1 | 3
-------------------------------------
2 | 2 | 100 | 5
-------------------------------------
4 | 3 | 500 | 6
-------------------------------------

As you can see, it sorts field2 first. Then it sorts field3 maintaining the order of field2. Then maintaining the order of field2 and field3, it sorts field4.

I know my explanation isn't really good ! (Or is it more confusing ?)

Note: If you don't specify how you want to sort your records, it will sort in ascending order by default.

Ya thats what I have been trying.

The problem is I keep getting the same result.

That is:
The table comes out perfect BUT
it comes out backwards...

So what should be first is last, second is second last, and so on.

Get what I mean? Im not being confusing now :D

The thing is even when I put ASC or DESC the table stays the same way...

Ill relate my problem to your table.
I have sorted my table via field4 then field 3 and the output is a backward output.

Dont know why :(

Thanks nav, once again.

I figured it out!

Stupid Syntax imo but I know now.

Go the mysql reference manual!

hi,
simply use "order by field1 asc, field2 desc, ... " . it would work fine!

Where is the explanation like this on the Mysql documentaion site. I find it so much easier to find out how stuff works for PHP on PHP.net site, but struggle with no dev.mysql.com.

Thanks

Ashton

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.