如何使用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