* JP <[EMAIL PROTECTED]> [2006-05-02 22:10]:
> SQLite provides a way to get the N-th row given a SQL statement, with
> LIMIT 1 and OFFSET <N>.
>
> Can the reverse be done in an efficient way? For example, given a table
> with 1million names, how can I return the row number for a particular
> element? i.e. something like
>
> SELECT rownum FROM
> (SELECT name,<rownum> FROM clients
> WHERE name='foo' ORDER BY name)
>
Assuming your client names are unique, this should work:
SELECT
(
SELECT
COUNT(*)
FROM clients c2
WHERE c2.name < c1.name
ORDER BY c2.name
) rank,
c1.name
FROM clients c1
ORDER BY rank;
On MySQL5 and PostgreSQL, it works as intended. Unfortunately,
SQLite complains that it doesn’t know about `c1.name`. I tried to
do it with a join to see if that would work better, but I’m too
frazzled to figure it out right now.
Regards,
--
Aristotle Pagaltzis // <http://plasmasturm.org/>