2016-09-15 2 views
3

Ich möchte aus der MySQL-Tabelle alle Datensätze nach dem letzten Wert auswählen. Dies ist ein BeispielWählen Sie aus der Tabelle nach einem Wert

MyTable

+--------------------+--------------------+--------------------+--------------------+ 
| date (DATE)  |Product_id (INT fk)| Quantite (INT) |type (ENUM('S', 'R')| 
+--------------------+--------------------+--------------------+--------------------+ 
| 2016-09-20  |   1   |   15   |   R   | 
| 2016-09-21  |   1   |   20   |   S   | 
| 2016-09-23  |   1   |   19   |   R   | 
| 2016-09-28  |   1   |   30   |   S   | 
| 2016-09-30  |   1   |   20   |   S   | 
+--------------------+--------------------+--------------------+--------------------+ 

i eine Abfrage will die letzten Zeilen mit einem Typ S

dies ist der Ausgang i

+--------------------+--------------------+--------------------+--------------------+ 
| date (DATE)  |Product_id (INT fk)| Quantite (INT) |type (ENUM('S', 'R')| 
+--------------------+--------------------+--------------------+--------------------+ 
| 2016-09-28  |   1   |   30   |   S   | 
| 2016-09-30  |   1   |   20   |   S   | 
+--------------------+--------------------+--------------------+--------------------+ 
+4

Können Sie uns auch die erwartete Ausgabe zeigen oder erklären, was Sie mit den letzten Zeilen meinen? –

+0

@GiorgosBetsos Fertig Bearbeiten – klaus

Antwort

2

einfach brauchen, um Verwenden Sie LIMIT:

SELECT * 
FROM YourTable t 
WHERE t.type = 'S' 
ORDER BY t.date DESC 
LIMIT 1; 

Wenn Sie es für jede ID, dann können Sie verwenden NOT EXISTS():

SELECT * FROM YourTable t 
WHERE NOT EXISTS (SELECT 1 FROM YourTable s 
        WHERE s.product_id = t.product_id 
        AND s.type = 'S' 
        AND s.date > t.date) 
    AND t.type = 'S' 

EDIT: Wenn ich Sie richtig verstanden, Sie wollen alle den Datensatz mit Typ S nach dem letzten Datensatz des Typs R, Wenn ja:

+0

bearbeitet die Frage – klaus

+0

@ Klaus Also, die letzten zwei Datensätze? Ändern Sie "LIMIT 1" in "LIMIT 2". – sagi

+0

nein es kann mehr sein ... kann es nicht bezeugen – klaus

Verwandte Themen