10
votes

Comment sélectionner la première et la dernière ligne de données d'un résultat mysql?

Sélectionnez * à partir de l'utilisateur renvoie 75 utilisateurs. Est-il possible de sélectionner le 1er utilisateur et 75e utilisateur sans faire alors que ($ rang = mysql_fetch_assoc ($ résultat)) ?? et comment?

mise à jour

juste pour être plus clair: j'ai besoin d'avoir Select * car j'ai besoin du premier et du 75ème utilisateur avant que je ne fasse tandis que mysql_fetch_assoc donc ASC, DESC, Limiter Les réponses non requises.


2 commentaires

Sélectionnez ... où id in (1,75) ?


Et si cela ne reçoit pas toujours 75 utilisateurs, vous devrez probablement exécuter deux questions, car vous ne saurez pas combien il y a la première fois ... Sauf s'il est possible de faire comptage limite (*) - 1, 1 ? Probablement pas.


6 Réponses :


24
votes
$result = mysql_query('SELECT * from User');

mysql_data_seek($result, 1);
$row1 = mysql_fetch_assoc($result);

mysql_data_seek($result, 75);
$row75 = mysql_fetch_assoc($result);

1 commentaires

Merci mais j'ai besoin de tous les autres résultats. J'ai besoin de prendre des mesures à 1er et à d'autres dossiers avant que je passe à travers. Voir pdate.



17
votes

Si vous pouvez trier, vous pouvez.

Select * from User order by [something] desc limit 1


1 commentaires

Bonne solution si vous avez des numéros différents de résultats! Bonne idée.



1
votes
SELECT  um.SortOrder, u.*
FROM    Users u
        INNER JOIN (
          SELECT 1 AS SortOrder, MIN(UserID) AS UserID FROM Users
          UNION ALL SELECT 2, MAX(UserID) FROM Users
        ) um ON um.UserID = u.UserID
UNION ALL
SELECT  3 AS SortOrder, u.*
FROM    Users u
        LEFT OUTER JOIN (
          SELECT MIN(UserID) AS UserID FROM Users
          UNION ALL SELECT MAX(UserID) FROM Users
        ) um ON um.UserID = u.UserID
WHERE   um.UserID IS NULL
ORDER BY
        SortOrder

0 commentaires

5
votes

En supposant que vous avez «ID» comme clé primaire et que vous avez besoin du dernier (pas le 75ème), vous pouvez essayer quelque chose comme: xxx


0 commentaires

0
votes

Eh bien, le titre de votre question est un peu différent de l'explication que vous avez donnée.

Je le dis parce que vous souhaitez sélectionner la première et la dernière ligne, il peut être différent de sélectionner la 1ère et la 75e rangée COS au cas où les lignes augmentent ou diminuent, le dernier pourrait ne pas être la 75ème rangée.

Pour répondre à la partie de la première et dernière ligne, je pense que vous pouvez le faire. xxx

Cette requête fonctionnera bien dans l'espoir que les utilisateurs sont commandés par ID.

Mais si vous parlez de la 1re et de la 75ème rangée, puis Je vais m'installer avec la réponse de @ Saul.

J'espère que cela aide.


0 commentaires

3
votes
SELECT 
(SELECT column FROM table WHERE [condition] ORDER BY column LIMIT 1) as 'first',
(SELECT column FROM table WHERE [condition] ORDER BY column DESC LIMIT 1) as 'last'

0 commentaires