2011-03-09 5 views
2

i ont une structure de table comme celui-ciSELECT tous les nouveaux enregistrements distincts

sn | person_id | image_name | 

    1 | 1   |  abc1.jpb 
    2 | 1   |  aa11.jpg 
    3 | 11  |  dsv.jpg 
    4 | 11  |  dssd.jpg 
    5 | 11  |  sdf.jpg 

J'ai besoin person_id distincts le plus récent de ligne comme suit

2 | 1   | aa11.jjpb 
    5 | 11   | sdf.jpg 

Il est possible?

Répondre

4
SELECT * FROM yourtable GROUP BY person_id ORDER BY sn DESC 

Essentiellement, vous voulez sélectionner tous les enregistrements de votre table. Ensuite, il est regroupé par le person_id (ce qui limite le résultat à 1 par personne id) ... Commande par SN decending signifie qu'il sera de retour le plus récent (le plus élevé) sn

Mise à jour: (et vérifié)

SELECT * FROM (SELECT * FROM stackoverflow ORDER BY sn DESC) a GROUP BY person_id ORDER BY sn 
+0

SELECT * FROM GROUPE yourtable PAR ORDRE person_id PAR sn DESC Cette déclaration est la valeur descendante listage de Résultat .donc toujours pas obtenir ce que je veux avoir –

+0

Rectifié les résultats souhaités dans l'ordre désiré ... – CarpeNoctumDC

+0

SELECT * FROM (SELECT * FROM stackoverflow ORDER BY sn DESC) un GROUP BY person_id Merci CarpeNoctumDC Cela fonctionne bien maintenant –

5
SELECT * FROM table GROUP BY person_id HAVING MAX(sn) 

EDIT

SELECT f.* 
FROM (
     SELECT person_id, MAX(sn) as maxval 
     FROM table GROUP BY person_id 
    ) AS x INNER JOIN table AS f 
ON f.person_id = x.person_id AND f.sn = x.maxval; 

où la table est le nom de votre table.

+0

Upvoted pour le MAX ... LOL il est trop tôt le matin pour penser directement – CarpeNoctumDC

+0

SELECT * FROM table GROUP BY person_id AYANT MAX (sn) 1 | 1 | abc1.jpb 4 | 11 | dssd.jpg Ne fonctionne pas Toujours montrant l'ancienne rangée –

+0

@ G-Rajendra: Désolé. Je ne peux pas atteindre ici. Vérifiez la réponse mise à jour si cela fonctionne. –

0
SELECT * FROM table a WHERE a.`id` = (SELECT MAX(`id`) FROM table b WHERE b.`person_id` = a.`person_id`); 

Ce que vous faites dans la parenthèse est la sélection au maximum id pour les lignes qui ont cette person_id distinctes. Donc, pour chaque person_id unique, vous obtenez l'entrée la plus récente.

Questions connexes