Q:

SELECT last 250 rows from a table with no auto id

I know there is a few posts out there already but some are conflicting.
I have taken on a project in which I have inherited a table with a few 1000 entries.
The problem is, there is no auto increment ID field on the table and I have been asked to extract the last 300 rows that were entered into it.
It it possible to extract the last 300 entries from a table? Is there a "systems row id"?

A:

The strict answer is "no" unless you have a date or something else that indicates order.  Tables are inherently unordered.
In practice, you generally fetch the data back in the order you put it in.  The more true the statement, "I loaded the data once, with no subsequent inserts, into a system with only one processor and one disk", the more likely that the data is actually in order.
Having a system row id would not help you, because you might have deletes and subsequent inserts.  A later record would be put in an earlier page, in this case.
You have a small table.  Do a select *, copy the data into a spreadsheet and do the work from there.
Alternatively, you can select the table with an increasing row number, insert into another table, and then do the select from there.  Something like this pseudocode:
insert into NewTable (seqnum, cols)
    select :rownum=:rownum+1, cols
    from YourTable

There is a chance you'll get what you want.
One last point.  If you did inserts and have the log files since the inserts, you might be able to get the information from there.  With a little work.

A:

Try this: 
SELECT col1, col2, ... 
FROM (SELECT col1,col2, ..., (@auto:=@auto+1) indx 
      FROM tablename, (SELECT @auto:=1) AS a
     ) AS b 
ORDER BY indx DESC 
LIMIT 30

