2013-07-07 255 views
8

我已經搜索和搜索,無法找到這個問題的答案,我可能會以錯誤的方式提問。有多個記錄的MySQL「SELECT LIMIT 1」是否從頂部選擇第一條記錄?

我查詢員工數據庫。

我需要基於位置的ID來獲得的細節,但有可能是這個位置ID的多個記錄,因爲這組織有正式員工和臨時員工,對同一位置採取行動。

因此,爲了獲得位置ID的現任主人,我需要我的查詢來選擇相匹配的位置的字符串,從上而下的第一個記錄。

將這個選擇從頂部的第一個匹配的記錄?

SELECT * WHERE `position_id`="00000000" LIMIT 1; 

在此先感謝。

+0

它選擇第一條記錄。如果你還沒有在查詢中指定一個命令... ::聳肩:: –

回答

8

您需要一個ORDER BY子句來定義您的表的各個記錄之間的順序。如果您不使用ORDER BY,則可以假定記錄之間沒有固定的順序,並且每次執行查詢時都可以獲得新訂單。

+0

謝謝,我會通過「ORDER BY ID」攻擊這個問題我認爲我先在Excel中排序記錄。 – hammus

+1

請記住,執行一個ORDER BY ID LIMIT 1將首先排序整個結果集,然後給你第一行。 – flogvit

2

它只是讓一個隨機*。除非添加ORDER BY子句,否則無法確定它會是哪一個。

*沒有真正隨機的,當然。這取決於記錄的存儲方式,每次重複查詢可能會返回相同的結果,至少只要您不修改表或其內容即可。我的意思是,你不能確定。

3

從手冊:

有了一個說法,該值指定從結果的開頭返回設置

因此,與LIMIT 1的行數,你從一開始的第一行結果集。結果集取決於所使用的引擎以及您擁有的索引。如果你想添加第一行,你需要創建另一列來定義它。