Are you on Oracle? Oracle Analytic functions provide an easy way to answer this question...
Oracle8i Enterprise Edition Release 8.1.7.2.0 - Production
With the Partitioning option
JServer Release 8.1.7.2.0 - Production
SQL> CREATE TABLE users (user_id NUMBER (2));
Table created.
SQL> INSERT INTO users VALUES (89);
1 row created.
SQL> INSERT INTO users VALUES (90);
1 row created.
SQL> INSERT INTO users VALUES (34);
1 row created.
SQL> INSERT INTO users VALUES (23);
1 row created.
SQL> INSERT INTO users VALUES (67);
1 row created.
SQL> INSERT INTO users VALUES (33);
1 row created.
SQL> COMMIT;
Commit complete.
SQL> SELECT user_id1, user_id2
2 FROM (SELECT user_id user_id1,
3 LEAD (user_id) OVER (
4 ORDER BY user_id) user_id2,
5 ROW_NUMBER () OVER (
6 ORDER BY user_id) row_num
7 FROM users)
8 WHERE MOD (row_num, 2) = 1
9 /
USER_ID1 USER_ID2
--------- ---------
23 33
34 67
89 90
SQL>