2016-05-25 10 views
2

Ich habe eine Tabelle Nachrichten in meiner SQLite-Datenbank. Diese Tabelle hat drei Spalten msg_id, sender_id, msg_body. Ich brauche eine letzte Nachricht mit jeder Benutzer-ID und diese Nachrichten sollten in der Reihenfolge bestellt werden. für zB. meine Nachrichten-Tabelle istWie bekomme ich die erste Zeile von jeder Gruppe aus einer Tabelle in sqliendatenbank?

msg_id | sender_id | msg_body 
--------+-----------+---------- 
    1 | 18  |"something" 
    2 | 18  |"something" 
    3 | 19  |"something" 
    4 | 19  |"something" 

Was ich will, Tisch ist: -

msg_id | sender_id | msg_body 
-------+-----------+---------- 
    4 | 19  |"something" 
    2 | 18  |"something" 

Antwort

0

Versuchen Sie folgendes:

SELECT t1.* 
FROM mytable AS t1 
JOIN (
    SELECT sender_id, MAX(msg_id) AS max_msg_id 
    FROM mytable 
    GROUP BY sender_id 
) AS t2 ON t1.sender_id = t2.sender_id AND t1.msg_id = t2.max_msg_id 
0

Eine Möglichkeit wäre, eine INNER JOIN Ihrer ursprünglichen Tabelle mit einer Unterabfrage für jede sender_id Gruppe die jüngste Aufzeichnung enthält, zu tun:

SELECT t1.msg_id, t1.sender_id, t1.msg_body 
FROM yourTable t1 
INNER JOIN 
(
    SELECT sender_id, MAX(msg_id) AS max_msg_id 
    FROM yourTable 
    GROUP BY sender_id 
) t2 
    ON t1.msg_id = t2.max_msg_id AND t1.sender_id = t2.sender_id 

für eine laufende Demo den Link unten folgen:

SQLFiddle

0

letzte Meldung Anzeige für Sender.

SELECT * FROM messagees group by sender_id order by id msg_id 
Verwandte Themen