tags:

views:

1787

answers:

4

In Oracle you can limit the number of rows returned in an arbitrary query by filtering on the "virtual" rownum column.

e.g.

select * from all_tables where rownum <= 10

will return at most 10 rows.

Is there a simple generic way to do something similar in Ingres?

+1  A: 

Blatantly changing my answer. "Limit 10" works for MySql and others, Ingres uses

Select First 10 * from myTable

Ref

Tnilsson
A: 

select * from myTable limit 10 does not work.

Have discovered one possible solution:

    TIDs are "tuple identifiers" or row addresses.  The TID contains the
    page number and the index of the offset to the row relative to the
    page boundary.  TIDs are presently implemented as 4-byte integers.
    The TID uniquely identifies each row in a table.  Every row has a
    TID.  The high-order 23 bits of the TID are the page number of the page
    in which the row occurs.  The TID can be addressed in SQL by the name 
    `tid.'

So you can limit the number of rows coming back using something like:

select * from SomeTable where tid < 2048

The method is somewhat inexact in the number of rows it returns. It's fine for my requirement though because I just want to limit rows coming back from a very large result set to speed up testing.

Craig
A: 

Hey Craig. I'm sorry, I made a Ninja Edit. No, Limit 10 does not work, I was mistaken in thinking it was standard SQL supported by everyone. Ingres uses (according to doc) "First" to solve the issue.

Tnilsson
A: 

Hey Ninja editor from Stockholm! No worries, have confirmed that "first X" works well and a much nicer solution than I came up with. Thankyou!

Craig