web-dev-qa-db-ja.com

複数のレコードを持つMySQL "SELECT LIMIT 1"は、先頭から最初のレコードを選択しますか?

私は検索して検索しましたが、この質問に対する答えが見つかりません。おそらく間違った方法で質問しています。

従業員のデータベースを照会しています。

ポジションIDに基づいて詳細を取得する必要がありますが、この組織には同じポジションに対して行動する正社員と臨時従業員がいるため、そのポジションIDには複数のレコードが存在する可能性があります。

そのため、位置IDのCURRENT占有者を取得するには、位置文字列に一致する最初のレコードをTOP DOWNから選択するクエリが必要です。

これにより、最初に一致したレコードが上から選択されますか?

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

前もって感謝します。

12
hammus

テーブルの個々のレコード間の順序を定義するには、ORDER BY句が必要です。 ORDER BYを使用しない場合、レコード間に固定された順序はないと想定でき、クエリを実行するたびに新しい順序を取得できます。

11
apartridge

マニュアルから:

引数が1つの場合、値は結果セットの先頭から返す行数を指定します

したがって、LIMIT 1結果セットから最初の行を取得します。結果セットが何であるかは、使用されているエンジンと使用しているインデックスによって異なります。最初の行を追加する場合は、別の列を作成して定義する必要があります。

3
flogvit

ランダムに取得します*ORDER BY句を追加しない限り、どちらになるかを知る方法はありません。

* もちろん、ランダムではありません。少なくともテーブルやその内容を変更しない限り、レコードの保存方法に依存し、繰り返しクエリが毎回同じ結果を返す可能性があります。実は、あなたにはわかりません。

2
GolezTrol