Assuming you're using a version of MySQL new enough to support subqueries -- and if not, what are you still doing on MySQL 3? -- here's an example of how it's done, using a temporary table with meaningless contents:
mysql> create temporary table t (n text);
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t (n) values ('a'), ('b'), ('c'), ('d'), ('e');
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from t;
+------+
| n |
+------+
| a |
| b |
| c |
| d |
| e |
+------+
mysql> SET @i = 0; SELECT i, n FROM (SELECT @i := @i + 1 AS i, n FROM t) a WHERE MOD(a.i, 2) = 0;
Query OK, 0 rows affected (0.00 sec)
+------+------+
| i | n |
+------+------+
| 2 | b |
| 4 | d |
+------+------+
2 rows in set (0.00 sec)
mysql> SET @i = 0; SELECT i, n FROM (SELECT @i := @i + 1 AS i, n FROM t) a WHERE MOD(a.i, 2) = 1;
Query OK, 0 rows affected (0.00 sec)
+------+------+
| i | n |
+------+------+
| 1 | a |
| 3 | c |
| 5 | e |
+------+------+
2 rows in set (0.00 sec)
See how that works? You're setting session variable @i to zero, then, in the subquery, doing the equivalent of a preincrement on it to give you an index column along with your data rows. Then, in the outer query, you're selecting rows based on whether @i mod 2 is 0 (for even-numbered rows) or 1 (for odd-numbered rows).
I've selected the 'i' column in the outer query for purposes of illustration, but you don't need to do the same for the technique to work -- or, of course, if you're selecting * in the outer query, you can just ignore the 'i' column values in the result. (If you already have a column 'i' in your data table, just use a different alias in the subquery.)
The technique generalizes pretty well, too; for WHERE MOD(a.i, N) = 0, you get back every Nth row.