The ORDER BY keyword is used to sort the result-set in ascending or descending order. The ORDER BY keyword sorts the records in ascending order by default. To sort the records in descending order, use the DESC keyword.
select type , COUNT from TABLE order by FIELD(type,'A','B','C','D') ; It works fine if the column type has value for 'A,B,C,D' . In some cases the order by FIELD('A','B','C','D') some columns may not have value in table . In this cases I want to put 0 for it and construct a result .
You can use the keyword ASC or DESC to get result in ascending or descending order. By default, it's the ascending order.
in php u can do it like : <? php $my_array = array (3,6,1,8,9) ; $sql = 'SELECT * FROM table WHERE id IN (3,6,1,8,9)'; $sql .
SELECT id, name
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')
The FIELD function returns the position of the first string in the remaining list of strings.
However, it is much better performance-wise to have an indexed column that represents your sort order, and then sort by this column.
Another option from here: http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html
select *
from tablename
order by priority='High' DESC, priority='Medium' DESC, priority='Low" DESC;
So in your case (untested) would be
SELECT id, name
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY name = 'B', name = 'A', name = 'D', name = 'E', name = 'C';
Depending what you're doing I've found it a bit quirky but always got it to work after playing with it a bit.
Try something like
... ORDER BY (CASE NAME WHEN 'B' THEN 0 WHEN 'A' THEN 1 WHEN ...
May be this can help someone (p_CustomerId is passed in SP):
SELECT CompanyAccountId, CompanyName
FROM account
LEFT JOIN customer where CompanyAccountId = customer.AccountId
GROUP BY CompanyAccountId
ORDER BY CASE WHEN CompanyAccountId IN (SELECT AccountId
FROM customer
WHERE customerid= p_CustomerId)
THEN 0
ELSE 1
END, CompanyName;
Description: I want to show the account list. Here i am passing a customer id in sp. Now it will list the account names with accounts linked to that customers are shown at top followed by other accounts in alphabetical order.
You need another column (numeric) in your table, in which you specify the sort order. The IN clause doesn't work this way.
B - 1
A - 2
D - 3
E - 4
C - 5
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With