如何使用 SQL 查找表中的第一列和第一行
Posted
技术标签:
【中文标题】如何使用 SQL 查找表中的第一列和第一行【英文标题】:How to find a first column and first row in a table using SQL 【发布时间】:2009-05-12 15:37:13 【问题描述】:我被问到这个问题,但无法得出答案。
有没有办法在表格的第一行和第一列找到条目?
(在矩阵表示法中,这将是[1,1]th
位置)
【问题讨论】:
输入表名需要动态sql语句吗? 我想问我是否不知道列名,在这种情况下是否可能.. 【参考方案1】:简而言之:关系表不是矩阵。
在关系世界中,1'st row
仅在您在数据集上定义某些顺序时才有意义。没有“隐式第一记录”之类的东西。
假设您根据第一列的值对行进行排序,是这样的:
SELECT column1
FROM table
ORDER BY
column1
LIMIT 1
还要注意表中不同的列属于不同的domains
。
拥有表的目的是在这些domains
之间定义一些relation
,这就是为什么整个东西被称为“关系数据库”,而表本身有时也被称为“关系”。
列顺序在关系表中也没有特殊含义。
假设您总是按名称引用列。
如果替换列的顺序会影响查询结果,则认为这是一个糟糕的设计。
有SELECT *
和ORDER BY 1
之类的东西,但通常应该避免使用它们。
【讨论】:
【参考方案2】:有很多与问题的“第一行”部分相关的良好反馈。但就“第一列”而言,您可以尝试以下选项之一:
您可以使用数据库数据字典来获取表的第一列。例如,在 Oracle 中,查询将是:
1234563 /p>select column_name from user_tab_columns where table_name='YOUR_TABLE_NAME' and column_id=1
【讨论】:
如何将数据插入表格的第一行第一列?【参考方案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 的事务更早插入到表中。您只知道该事务先开始,不先完成。使用日期字段是真正确定的唯一方法。这些年来,我学会了为这些东西设计,你不能在以后查询你一开始没有存储的信息。
【讨论】:
以上是关于如何使用 SQL 查找表中的第一列和第一行的主要内容,如果未能解决你的问题,请参考以下文章
滚动时如何锁定表格的第一行和第一列,可能使用 JavaScript 和 CSS?