Order by "in" clause

Hi,

I have a query like this:

select id, title from product where id in (1,3,5,8,10)

What I want it to do is return the rows in the order specified in the
"in" clause, so that this:

select * from product where id in (10,3,8,5,1)

will give me results in this order:

+------+---------+
| id | title |
+------+---------+
| 10 | foo |
+------+---------+
| 3 | baz |
+------+---------+
| 8 | bar |
+------+---------+
| 5 | wibble |
+------+---------+
| 1 | flirble |
+------+---------+

Is this possible? If so, how?

Mark
--
http://mark.goodge.co.uk

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql?unsub=gcdmg-mysql-2 [at] m.gmane.org
Mark Goodge [ Di, 09 November 2010 10:09 ] [ ID #2050199 ]

Re: Order by "in" clause

On Tue, Nov 9, 2010 at 10:09 AM, Mark Goodge <mark [at] good-stuff.co.uk> wrote:
> Hi,
>
> I have a query like this:
>
> select id, title from product where id in (1,3,5,8,10)
>
> What I want it to do is return the rows in the order specified in the "in=
"
> clause, so that this:
>
> select * from product where id in (10,3,8,5,1)
>
> will give me results in this order:
>
> +------+---------+
> | id =A0 | title =A0 |
> +------+---------+
> | =A010 =A0| =A0 =A0foo =A0|
> +------+---------+
> | =A0 3 =A0| =A0 =A0baz =A0|
> +------+---------+
> | =A0 8 =A0| =A0 =A0bar =A0|
> +------+---------+
> | =A0 5 =A0| wibble =A0|
> +------+---------+
> | =A0 1 =A0| flirble |
> +------+---------+
>
> Is this possible? If so, how?
>

select * from product where id in (10,3,8,5,1) order by field(id,10,3,8,5,1=
)

should do the trick...

Regards,

Joeri

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql?unsub=3Dgcdmg-mysql-2 [at] m.gmane.o rg
Joeri De Backer [ Di, 09 November 2010 10:15 ] [ ID #2050200 ]

RE: Order by "in" clause



> -----Original Message-----
> From: Joeri De Backer [mailto:fonsken [at] gmail.com]
> Sent: Tuesday, November 09, 2010 1:16 AM
> To: mysql
> Subject: Re: Order by "in" clause
>
> On Tue, Nov 9, 2010 at 10:09 AM, Mark Goodge
> <mark [at] good-stuff.co.uk> wrote:
> > Hi,
> >
> > I have a query like this:
> >
> > select id, title from product where id in (1,3,5,8,10)
> >
> > What I want it to do is return the rows in the order
> specified in the "in"
> > clause, so that this:
> >
> > select * from product where id in (10,3,8,5,1)
> >
> > will give me results in this order:
> >
> > +------+---------+
> > | id =A0 | title =A0 |
> > +------+---------+
> > | =A010 =A0| =A0 =A0foo =A0|
> > +------+---------+
> > | =A0 3 =A0| =A0 =A0baz =A0|
> > +------+---------+
> > | =A0 8 =A0| =A0 =A0bar =A0|
> > +------+---------+
> > | =A0 5 =A0| wibble =A0|
> > +------+---------+
> > | =A0 1 =A0| flirble |
> > +------+---------+
> >
> > Is this possible? If so, how?
> >
>
> select * from product where id in (10,3,8,5,1) order by
> field(id,10,3,8,5,1)
>
> should do the trick...
>
> Regards,
>
> Joeri

....ya learn something new every day... ;-)

Here's more on this topic:
http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html #function_fie=
ld


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql?unsub=3Dgcdmg-mysql-2 [at] m.gmane.o rg
Daevid Vincent [ Di, 09 November 2010 21:52 ] [ ID #2050215 ]
Datenbanken » gmane.comp.db.mysql.general » Order by "in" clause

Vorheriges Thema: Duplicate entry '2' for key 1
Nächstes Thema: Best encription method?