如何使用SQL在表格中找到第一列和第一行

3

我被问及这个问题,但是无法想出答案。

在表格中是否有一种方法可以找到第一行和第一列的入口?

(在矩阵符号中,那将是 [1,1]th 位置)


您需要为输入的表名使用动态SQL语句吗? - Irfan Mulic
我正在尝试询问,如果我不知道列名,在这种情况下是否有可能... - Arc
6个回答

9
简而言之:关系表不是矩阵。
在关系世界中,只有在对数据集定义某种顺序时,“第一行”才有意义。不存在“隐式的第一条记录”。
假设您按第一列的值对行进行排序,那么它就是这样的:
SELECT  column1
FROM    table
ORDER BY
        column1
LIMIT 1

还要注意表格中不同的列属于不同的

拥有该表格的目的是定义这些之间的一些关系,这就是为什么整个东西被称为“关系数据库”,而这些表本身有时被称为“关系”。

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

假设您总是通过名称引用列。

如果更改列的顺序会影响查询结果,则认为这是一种不良设计。

有类似于SELECT *ORDER BY 1的东西,但通常应避免使用。


4

关于“第一行”部分,有很多好的反馈意见。但是对于“第一列”,您可以尝试以下选项之一:

  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
    
  2. 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.


如何将数据插入表格的第一行第一列? - Steffi Keran Rani J

2

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

如果您的DBMS支持LIMIT,则很容易实现此目的。

SELECT * FROM table ORDER BY column LIMIT 1

否则,您可以使用TOP,但如果您的order by列对于顶部项目具有重复值,则可能会获得比您要求的更多行(根据您的DBMS,在MS-SQL中,除非指定WITH TIES,否则不会这样做)。
SELECT TOP 1 * FROM Table ORDER BY column

1

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

一些使用ISAM类型表的数据库在运行不带有序游标的查询时似乎会返回一致的行顺序,但删除和插入操作很容易改变这种顺序。


0
Select top 1 Column1
From MyTable
Order by Column1

0

如果您正在尝试查找输入表中的第一条记录,则需要在创建表时设置一个DateEntered字段,然后可以通过搜索最早日期来查找第一条记录。如果您有一个身份字段,则按身份字段排序是获取早期记录的一种方法,但您无法真正保证创建ID 1的事务比生成ID 2的事务更早地插入到表中。您只知道事务开始得更早,而不是完成得更早。使用日期字段是确保的唯一方法。多年来,我已经学会了为这些事情设计,您无法查询以前没有存储的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接