J'ai cherché et cherché et je ne trouve pas de réponse à cette question, je la pose probablement dans le mauvais sens.
Je recherche une base de données d'employés.
J'ai besoin d'obtenir des détails en fonction d'un identifiant de poste, mais il pourrait y avoir plusieurs enregistrements pour cet identifiant de poste car cette organisation a des employés permanents et des employés temporaires qui agissent contre le même poste.
Ainsi, afin d'obtenir l'occupant ACTUEL de l'identifiant de position, j'ai besoin de ma requête pour sélectionner le PREMIER enregistrement qui correspond à la chaîne de position, du haut vers le bas.
cela sélectionnera-t-il le premier enregistrement correspondant à partir du haut?
SELECT * WHERE `position_id`="00000000" LIMIT 1;
Merci d'avance.
Vous avez besoin d'un ORDER BY
clause pour définir l'ordre entre les enregistrements individuels de votre table. Si vous n'utilisez pas ORDER BY
vous ne pouvez supposer aucun ordre fixe entre les enregistrements et vous pouvez obtenir un nouvel ordre chaque fois que vous exécutez la requête.
Du manuel:
Avec un argument, la valeur spécifie le nombre de lignes à retourner depuis le début de l'ensemble de résultats
Donc avec LIMIT 1
vous obtenez la première ligne du jeu de résultats. Le jeu de résultats dépend du moteur utilisé et des index dont vous disposez. Si vous souhaitez ajouter la première ligne, vous devez créer une autre colonne pour la définir.
Il en obtient juste un au hasard*. Il n'y a aucun moyen de dire lequel, sauf si vous ajoutez un ORDER BY
clause.
* Pas vraiment au hasard, bien sûr. Cela dépend de la façon dont les enregistrements sont stockés et les requêtes répétées retourneront probablement le même résultat à chaque fois, au moins tant que vous ne modifiez pas la table ou son contenu. En fait, vous ne pouvez pas être sûr.