【问题标题】:How to find a first column and first row in a table using SQL如何使用 SQL 查找表中的第一列和第一行
【发布时间】:2009-05-12 15:37:13
【问题描述】:

我被问到这个问题,但无法得出答案。

有没有办法在表格的第一行和第一列找到条目?

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

【问题讨论】:

  • 输入表名需要动态sql语句吗?
  • 我想问我是否不知道列名,在这种情况下是否可能..

标签: sql mysql database oracle


【解决方案1】:

简而言之:关系表不是矩阵。

在关系世界中,1'st row 仅在您在数据集上定义某些顺序时才有意义。没有“隐式第一记录”之类的东西。

假设您根据第一列的值对行进行排序,是这样的:

SELECT  column1
FROM    table
ORDER BY
        column1
LIMIT 1

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

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

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

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

如果替换列的顺序会影响查询结果,则认为这是一个糟糕的设计。

SELECT *ORDER BY 1 之类的东西,但通常应该避免使用它们。

【讨论】:

    【解决方案2】:

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

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

      select column_name  
      from   user_tab_columns 
      where  table_name='YOUR_TABLE_NAME' 
      and    column_id=1
      
    2. 1234563 /p>

    【讨论】:

    • 如何将数据插入表格的第一行第一列?
    【解决方案3】:

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

    当您在没有有序游标的情况下运行查询时,某些使用 ISAM 类型表的数据库会返回一致的行顺序,但删除和插入很容易改变这一点。

    【讨论】:

      【解决方案4】:

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

      如果您的 DBMS 支持 LIMIT,这很容易。

      SELECT * FROM table ORDER BY column LIMIT 1
      

      否则,您可以使用 TOP,但如果您的 order by column 有重复的 top item 值,您可能会得到比您要求的更多的行(取决于您的 DBMS,在 MS-SQL 中,它不会这样做,除非您指定 WITH TIES)。

      SELECT TOP 1 * FROM Table ORDER BY column
      

      【讨论】:

        【解决方案5】:
        Select top 1 Column1
        From MyTable
        Order by Column1
        

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 2015-06-03
            • 2020-05-17
            • 1970-01-01
            • 2022-09-23
            • 2016-04-04
            • 2018-07-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多