我被问到这个问题而无法得出答案。
有没有办法在表格的第一行和第一列找到条目?
(以矩阵表示法,即[1,1]th
位置)
答案 0 :(得分:7)
用两个词来说:关系表不是矩阵。
在关系世界中,1'st row
只有在数据集上定义某个顺序时才有意义。没有“隐含的第一记录”这样的东西。
假设您在第一列的值上订购行,就是这样:
SELECT column1
FROM table
ORDER BY
column1
LIMIT 1
另请注意,表格中的不同列属于不同的domains
。
拥有该表的目的是在这些relation
之间定义一些domains
,这就是为什么整个事物被称为“关系数据库”,而表本身有时被称为“关系”。 / p>
列顺序在关系表中也没有特殊含义。
假设您始终按名称引用该列。
如果替换列的顺序会影响查询结果,则会将其视为设计不佳。
有SELECT *
和ORDER BY 1
等内容,但通常应该避免使用。
答案 1 :(得分:3)
有很多关于这个问题的“第一行”部分的好反馈。但就“第一栏”而言,您可以尝试以下选项之一:
您可以使用数据库数据字典来获取表的第一列。在Oracle中,例如查询将是:
select column_name from user_tab_columns where table_name='YOUR_TABLE_NAME' and column_id=1
如果您使用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的事务更早插入到表中。你只知道该事务首先开始,先没先完成。使用日期字段是真正确定的唯一方法。多年来,我学会了为这些东西设计,以后你不能查询你没有存储的信息。