我被问及这个问题,但是无法想出答案。
在表格中是否有一种方法可以找到第一行和第一列的入口?
(在矩阵符号中,那将是 [1,1]th
位置)
SELECT column1
FROM table
ORDER BY
column1
LIMIT 1
还要注意表格中不同的列属于不同的域
。
拥有该表格的目的是定义这些域
之间的一些关系
,这就是为什么整个东西被称为“关系数据库”,而这些表本身有时被称为“关系”。
在关系表中,列的顺序也没有特殊含义。
假设您总是通过名称引用列。
如果更改列的顺序会影响查询结果,则认为这是一种不良设计。
有类似于SELECT *
和ORDER BY 1
的东西,但通常应避免使用。
关于“第一行”部分,有很多好的反馈意见。但是对于“第一列”,您可以尝试以下选项之一:
You can use database data dictionary to get the first column of the table. In Oracle, for example the query would be:
select column_name
from user_tab_columns
where table_name='YOUR_TABLE_NAME'
and column_id=1
If you use JDBC or some other database access API, most of these APIS would allow you to do "select *"
and then you could get first column by accessing zero (or first) element of you result set.
从概念上讲,SQL表是无序的。您需要指定要排序的列,以便“第一行”的概念具有意义。
如果您的DBMS支持LIMIT,则很容易实现此目的。
SELECT * FROM table ORDER BY column LIMIT 1
SELECT TOP 1 * FROM Table ORDER BY column
关系表没有定义的行顺序,因此没有第一行。您可以使用数据库提供的任何LIMIT
等效物从查询中选择第一个结果。
一些使用ISAM类型表的数据库在运行不带有序游标的查询时似乎会返回一致的行顺序,但删除和插入操作很容易改变这种顺序。
Select top 1 Column1
From MyTable
Order by Column1
如果您正在尝试查找输入表中的第一条记录,则需要在创建表时设置一个DateEntered字段,然后可以通过搜索最早日期来查找第一条记录。如果您有一个身份字段,则按身份字段排序是获取早期记录的一种方法,但您无法真正保证创建ID 1的事务比生成ID 2的事务更早地插入到表中。您只知道事务开始得更早,而不是完成得更早。使用日期字段是确保的唯一方法。多年来,我已经学会了为这些事情设计,您无法查询以前没有存储的信息。