How to find first column and first row in a table using SQL

I was asked this question and I could not answer it.

Is there a way to find the record in the first row and first column of the table?

(In matrix notation, this would be the location [1,1]th

)

+1


a source to share


6 answers


There was a lot of good feedback related to the "first line" of the question. But for the "first column", you can try one of the following:



  • You can use a database data dictionary to get the first column of the table. In Oracle, for example, the query would look like this:

    select column_name  
    from   user_tab_columns 
    where  table_name='YOUR_TABLE_NAME' 
    and    column_id=1
    
          

  • If you are using JDBC or some other database access API, most of these APIS will let you do "select *"

    , and then you can get the first column by accessing the zero (or first) element of your result set.

+2


a source


In a few words: a relational table is not a matrix.

In the relational world, 1'st row

it only makes sense when you define some sort of order in your dataset. There is no such thing as "implicitly first record".

Assuming you are ordering your rows by the values ​​of the first column, this is:

SELECT  column1
FROM    table
ORDER BY
        column1
LIMIT 1

      

Also note that different columns in the table are different domains

.



The point of a table is to define some in relation

between these domains

, which is why it's all called "relational database" and the tables themselves are sometimes called "relationships".

Column order also doesn't really matter in a relational table.

It was assumed that you always refer to the column by name.

If replacing the column order affects the result of your query, it is considered bad design.

There are things like SELECT *

and ORDER BY 1

, but they should usually be avoided.

+8


a source


SQL tables are conceptually unordered. You need to specify the columns to be ordered for the "first row" idea to make sense.

It's easy if your DBMS supports LIMIT.

SELECT * FROM table ORDER BY column LIMIT 1

      

Otherwise, you can use TOP, but if your column order has duplicate values ​​for the top element, you may end up with more rows than you are asking for (depending on your DBMS, in MS-SQL this will not do this if you specify WITH TIES).

SELECT TOP 1 * FROM Table ORDER BY column

      

+1


a source


A relational table has no specific row order, so there is no first row. You can select the first result from a query using any LIMIT

equivalent suggested by your database.

Some databases that use ISAM tables will return consistent row order when running queries without an ordered cursor, but deleting and inserting can easily change this.

+1


a source


Select top 1 Column1
From MyTable
Order by Column1

      

0


a source


If you are trying to find the first record entered into the table, then you need to adjust the DateEntered field at the time the table is created, then you can find the first record by ranking for the earliest date. Ordering in the identification field, if you have one, is a way to get early records, but you can't really guarantee that the transaction that created ID 1 was actually inserted into the table before the transaction that generated ID 2. You only know that the transaction started first, and did not end first. Using a date field is the only way to really be sure. Over the years, I've learned to design for these things, you can't query for information later that you didn't save in the first place.

0


a source







All Articles