如何使用SQL查找表中的第一列和第一行

时间:2009-05-12 15:37:13

标签: sql mysql database oracle

我被问到这个问题而无法得出答案。

有没有办法在表格的第一行和第一列找到条目?

(以矩阵表示法,即[1,1]th位置)

6 个答案:

答案 0 :(得分:7)

用两个词来说:关系表不是矩阵。

在关系世界中,1'st row只有在数据集上定义某个顺序时才有意义。没有“隐含的第一记录”这样的东西。

假设您在第一列的值上订购行,就是这样:

SELECT  column1
FROM    table
ORDER BY
        column1
LIMIT 1

另请注意,表格中的不同列属于不同的domains

拥有该表的目的是在这些relation之间定义一些domains,这就是为什么整个事物被称为“关系数据库”,而表本身有时被称为“关系”。 / p>

列顺序在关系表中也没有特殊含义。

假设您始终按名称引用该列。

如果替换列的顺序会影响查询结果,则会将其视为设计不佳。

SELECT *ORDER BY 1等内容,但通常应该避免使用。

答案 1 :(得分:3)

有很多关于这个问题的“第一行”部分的好反馈。但就“第一栏”而言,您可以尝试以下选项之一:

  1. 您可以使用数据库数据字典来获取表的第一列。在Oracle中,例如查询将是:

    select column_name  
    from   user_tab_columns 
    where  table_name='YOUR_TABLE_NAME' 
    and    column_id=1
    
  2. 如果您使用JDBC或其他一些数据库访问API,大多数这些APIS都允许您执行"select *",然后您可以通过访问结果集的零(或第一)元素来获得第一列

答案 2 :(得分:1)

从概念上讲,SQL表是无序的。您需要指定要排序的列,以便“第一行”的想法有意义。

如果您的DBMS支持LIMIT,这很容易。

SELECT * FROM table ORDER BY column LIMIT 1

否则你可以使用TOP,但是如果按列的顺序具有顶级项的重复值,则可能会获得比你要求的更多的行(取决于你的DBMS,在MS-SQL中,它不会这样做除非你指定WITH TIES)。

SELECT TOP 1 * FROM Table ORDER BY column

答案 3 :(得分:1)

关系表没有已定义的行顺序,因此没有第一行。您当然可以使用数据库提供的LIMIT等效项来从查询中选择第一个结果。

在没有有序游标的情况下运行查询时,某些使用ISAM类型表的数据库似乎会返回一致的行顺序,但删除和插入很容易改变它。

答案 4 :(得分:0)

Select top 1 Column1
From MyTable
Order by Column1

答案 5 :(得分:0)

如果您要查找输入到表中的第一条记录,则需要在创建表时设置DateEntered字段,然后您可以通过搜索最早的日期来查找第一条记录。在标识字段上排序如果你有一个是获取早期记录的方法,但你不能真正保证创建ID 1的事务确实比生成ID 2的事务更早插入到表中。你只知道该事务首先开始,先没先完成。使用日期字段是真正确定的唯一方法。多年来,我学会了为这些东西设计,以后你不能查询你没有存储的信息。