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

如何使用SQL查找表中的第一列和第一行,sql,mysql,database,oracle,Sql,Mysql,Database,Oracle,有人问我这个问题,我想不出答案 有没有办法找到表中第一行和第一列的条目 (在矩阵表示法中,这将是[1,1]第个位置)几个字:关系表不是矩阵 在关系世界中,1'行只有当您在数据集上定义某种顺序时才有意义。没有“隐式第一记录”这样的东西 假设您按第一列的值对行进行排序,则如下所示: SELECT column1 FROM table ORDER BY column1 LIMIT 1 还要注意,表中的不同列属于不同的域 拥有表的目的是定义这些域之间的关系,这就是为什么整个过程

有人问我这个问题,我想不出答案

有没有办法找到表中第一行和第一列的条目


(在矩阵表示法中,这将是
[1,1]第
个位置)

几个字:关系表不是矩阵

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

假设您按第一列的值对行进行排序,则如下所示:

SELECT  column1
FROM    table
ORDER BY
        column1
LIMIT 1
还要注意,表中的不同列属于不同的

拥有表的目的是定义这些
域之间的
关系,这就是为什么整个过程被称为“关系数据库”,表本身有时被称为“关系”

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

假设您总是按名称引用该列

如果替换列的顺序会影响查询的结果,则会被视为糟糕的设计


有些事情像是
SELECT*
orderby1
,但通常应该避免它们。

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

Select top 1 Column1
From MyTable
Order by Column1
如果您的DBMS支持LIMIT,那么这很容易

SELECT * FROM table ORDER BY column LIMIT 1
否则,您可以使用TOP,但如果orderby列的TOP项具有重复的值,则可能会得到比您要求的更多的行(取决于您的DBMS,在MS-SQL中,除非您使用TIES指定,否则它不会这样做)


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


某些使用ISAM类型表的数据库在运行查询时,如果不使用有序光标,则会返回一致的行顺序,但删除和插入可以很容易地改变这种情况。

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

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

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

  • 如果您使用JDBC或其他一些数据库访问API,大多数API都允许您执行
    “select*”
    ,然后您可以通过访问结果集的零(或第一个)元素来获得第一列


  • 是否需要使用动态sql语句作为输入表名?我试图询问是否不知道列名,如果可能的话。如何将数据插入表的第一行、第一列?
    SELECT TOP 1 * FROM Table ORDER BY column
    
    select column_name  
    from   user_tab_columns 
    where  table_name='YOUR_TABLE_NAME' 
    and    column_id=1