Many thanks for the quick replies! This solution appears the most elegant:

---------- Forwarded message ----------
From: Markus Grossrieder <[EMAIL PROTECTED]>
Date: 2008/7/1
Subject: Re: force row to appear at top of results using order by
To: Andrew Martin <[EMAIL PROTECTED]>


Andrew,

something like this (air code)

SELECT events_groups_id, events_groups_name,
IF(events_groups_name='Personal Events', 1, 2) as sort_elem
FROM events_groups;
ORDER BY sort_elem, events_groups_name;

Regards,
Markus

----- Original Message ----- From: "Andrew Martin" <[EMAIL PROTECTED]>
To: <mysql@lists.mysql.com>
Sent: Tuesday, July 01, 2008 3:19 PM
Subject: force row to appear at top of results using order by


> Hello,
>
> I have an order by question...
>
> This is the "raw" data...
>
> mysql> SELECT events_groups_id, events_groups_name FROM events_groups;
> +------------------+---------------------+
> | events_groups_id | events_groups_name  |
> +------------------+---------------------+
> |                1 | Personal Events     |
> |                2 | Company events      |
> |                3 | Deliveries in       |
> |                4 | Invoices to pay     |
> |                5 | Invoices to receive |
> |                6 | Deliveries out      |
> |                9 | Online demos        |
> +------------------+---------------------+
> 7 rows in set (0.01 sec)
>
>
> This is almost the result I require:
>
> mysql> SELECT events_groups_id, events_groups_name FROM events_groups
> ORDER BY events_groups_name ASC;
> +------------------+---------------------+
> | events_groups_id | events_groups_name  |
> +------------------+---------------------+
> |                2 | Company events      |
> |                3 | Deliveries in       |
> |                6 | Deliveries out      |
> |                4 | Invoices to pay     |
> |                5 | Invoices to receive |
> |                9 | Online demos        |
> |                1 | Personal Events     |
> +------------------+---------------------+
> 7 rows in set (0.00 sec)
>
>
> I would like this to have Personal Events appear first, and the rest
> of the list still be alphabetically sorted like so:
>
> +------------------+---------------------+
> | events_groups_id | events_groups_name  |
> +------------------+---------------------+
> |                1 | Personal Events     |
> |                2 | Company events      |
> |                3 | Deliveries in       |
> |                6 | Deliveries out      |
> |                4 | Invoices to pay     |
> |                5 | Invoices to receive |
> |                9 | Online demos        |
> +------------------+---------------------+
>
> Is this possible without using a subquery or union?
>
> Many thanks,
>
>
> Andy
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]
>


--------------------------------------------------------------------------------



No virus found in this incoming message.
Checked by AVG.
Version: 8.0.101 / Virus Database: 270.4.3/1528 - Release Date: 7/1/2008 7:26 AM

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to