簡體   English   中英

如何使用SQL查找表中的第一列和第一行

[英]How to find a first column and first row in a table using SQL

我被問到這個問題而無法得出答案。

有沒有辦法在表格的第一行和第一列找到條目?

(在矩陣表示法中,那將是[1,1]th位置)

用兩個詞來說:關系表不是矩陣。

在關系世界中,只有在數據集上定義某個順序時, 1'st row才有意義。 沒有“隱含的第一記錄”這樣的東西。

假設您在第一列的值上排序行,就是這樣:

SELECT  column1
FROM    table
ORDER BY
        column1
LIMIT 1

另請注意,表中的不同列屬於不同的domains

擁有該表的目的是定義這些domains之間的某種relation ,這就是為什么整個事物被稱為“關系數據庫”,而表本身有時被稱為“關系”。

列順序在關系表中也沒有特殊含義。

假設您始終按名稱引用列。

如果替換列的順序會影響查詢的結果,則會將其視為設計不佳。

SELECT *ORDER BY 1類的東西,但通常應該避免使用它們。

有很多關於這個問題的“第一行”部分的好反饋。 但就“第一欄”而言,您可以嘗試以下選項之一:

  1. 您可以使用數據庫數據字典來獲取表的第一列。 在Oracle中,例如查詢將是:

     select column_name from user_tab_columns where table_name='YOUR_TABLE_NAME' and column_id=1 
  2. 如果您使用JDBC或其他一些數據庫訪問API,那么大多數這些APIS都允許您執行"select *" ,然后您可以通過訪問結果集的零(或第一)元素來獲得第一列。

從概念上講,SQL表是無序的。 您需要指定要排序的列,以便“第一行”的概念有意義。

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

SELECT * FROM table ORDER BY column LIMIT 1

否則你可以使用TOP,但是如果你的order by column有頂部項的重復值,你可能會得到比你要求的更多的行(取決於你的DBMS,在MS-SQL中,除非你指定WITH,否則它不會這樣做領帶)。

SELECT TOP 1 * FROM Table ORDER BY column

關系表沒有定義的行順序,因此沒有第一行。 您當然可以使用數據庫提供的LIMIT等效值從查詢中選擇第一個結果。

當您運行沒有有序游標的查詢時,某些使用ISAM類型表的數據庫似乎會返回一致的行順序,但刪除和插入可以輕松地更改它。

Select top 1 Column1
From MyTable
Order by Column1

如果您要查找輸入到表中的第一條記錄,則需要在創建表時設置DateEntered字段,然后您可以通過搜索最早的日期來查找第一條記錄。 在標識字段上排序如果你有一個是獲取早期記錄的方法,但你不能真正保證創建ID 1的事務確實比生成ID 2的事務更早插入到表中。你只知道該事務首先開始,先沒先完成。 使用日期字段是真正確定的唯一方法。 多年來,我學會了為這些東西設計,以后你不能查詢你沒有存儲的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM