2017-07-21 3 views
0

ich die max Zeitstempel Reihen versuchen software_image_build_id and variantWie die max Zeitstempel Zeilen aus einer Tabelle erhalten

eine Gruppe von Hier basierten zu bekommen, ist mein SQL Geige Link http://sqlfiddle.com/#!9/6ed643/1, es ausgeben sollte den max Zeitstempel Zeilen für ein Kombination für software_image_build_id und Variante, habe ich wie folgt versucht, aber es hilft nicht, kann jemand Anleitung geben, wie man es beheben kann?

SELECT software_image_build,MAX(timestamp) FROM software_image_builds where software_image_id=1452 
group by software_image_build 
+0

Haben Sie die Zeile mit max Zeitstempel wollen? –

+0

@AshishLohia - ja – user3508811

+0

Überprüfen Sie meine Abfrage. Fügen Sie hinzu, wenn es nicht funktioniert hat. –

Antwort

0

Sie müssen innere Abfrage verwenden, um die Daten zusammen mit max Zeitstempeln zu erhalten und dann die Daten einer äußeree Abfrage erhält unter Verwendung von software_image_id und Variante, um sicherzustellen, Sie korrekte Daten mit ihrem max Zeitstempel bekommen.

SELECT OUTSIDE.* 
FROM software_image_builds OUTSIDE, 
    (SELECT software_image_id, variant, MAX(timestamp) as maxtimestamp 
    FROM software_image_builds 
    GROUP BY software_image_id, variant) AS INSIDE 
WHERE OUTSIDE.software_image_id = INSIDE.software_image_id 
AND OUTSIDE.variant = INSIDE.variant 
AND OUTSIDE.timestamp = INSIDE.maxtimestamp 

enter image description here

+0

Ich möchte nur für eine bestimmte 'software_image_id = 1452' – user3508811

+0

die Abfrage aktualisiert und screenshot beide – JRG

+0

aber die Software_image_build entsprechend ist es CI_LA.UM.5.8-02200-8x98.1-20', wollen Zeile mit max Zeitstempel – user3508811

-1

select * from software_image_builds der Zeitstempel im (SELECT MAX (Zeitstempel) FROM software_image_builds Gruppe von software_image_id, Variante);

+0

Ich möchte Zeile mit Max Timestamp, dies ist nur geben Sie die Maxtimestamp aber nicht die entsprechende Zeile – user3508811

+0

bearbeitet. Macht jetzt Sinn? –

+0

@AshishLohia - es gibt keine Spalte nach Name Variante in Fiddle-Tabelle Schema? – JRG

0

Das Ergebnis scheint korrekt, welches Ergebnis möchten Sie? Diese sql erhalten die software_image_build und die maximale Zeitstempel jedes software_image_build.

Wenn Sie den maximalen Zeitstempel für alle Daten erhalten möchten, verwenden Sie nicht die Gruppe by.

SELECT software_image_build,MAX(timestamp) FROM software_image_builds where software_image_id=1452 

Wenn Sie jeden software_image_build erhalten möchten, und teilen Sie die max Zeitstempel jede Zeile, versuchen Sie die folgende Abfrage:

SELECT S.software_image_build,A.max_timestamp 
FROM software_image_builds AS S, 
(SELECT software_image_build,MAX(timestamp) as max_timestamp 
    FROM software_image_builds where software_image_id=1452) 
    AS A 
group by S.software_image_build 

Ausgang dieses:

software_image_build   max_timestamp 
CI_LA.UM.5.8-02200-8x98.1-16 2017-07-14T21:51:02Z 
CI_LA.UM.5.8-02200-8x98.1-20 2017-07-14T21:51:02Z 
CI_LA.UM.5.8-60402-8x98.1-1  2017-07-14T21:51:02Z 
+0

Ich möchte Zeile mit max Zeitstempel – user3508811

+0

SELECT S.ware_image_build, A.max_timestamp FROM software_image_builds AS S, (SELECT software_image_build, MAX (timestamp) als max_timestamp FROM software_image_builds wo software_image_id = 1452) AS A Gruppe von S. Software_image_build –

-1

Sie können die Ergebnisse bestellen durch die Zeitstempel Spalte und dann Limit verwenden, um nur das erste Ergebnis zurückgeben.

SELECT software_image_build, timestamp FROM software_image_builds where 
software_image_id=1452 group by software_image_build order by timestamp DESC  
limit 1 
0

Die SQL Sie jetzt Beiträge geschrieben haben:

SELECT software_image_build,max(timestamp) 
FROM software_image_builds 
WHERE software_image_id=1452 
GROUP BY software_image_build,variant 
LIMIT 1 

Ausgänge:

software_image_build   timestamp 
CI_LA.UM.5.8-02200-8x98.1-16 2017-07-13T18:38:41Z 
CI_LA.UM.5.8-02200-8x98.1-20 2017-07-14T21:51:02Z 
CI_LA.UM.5.8-60402-8x98.1-1  2017-02-28T15:08:10Z 

, die genau zu sein scheint, was Sie jetzt sagen, Sie wollten. Wenn nicht, ist eine weitere Klärung erforderlich.

+0

@EFP - Mein schlechtes, ich aktualisiert von sqfiddle @ http://sqlfiddle.com/#!9/6ed643/1,Ich muss die 'max Timestamp Zeile' für eine Gruppe von drucken software_image_id und variante – user3508811

+0

Gleicher Unterschied. Entfernen Sie MAX und verwenden Sie ORDER BY TIMESTAMP DESC LIMIT 1. – EJP

+0

@EJP - Wenn mehrere Zeilen mit ID 1452 mit maximalem Zeitstempel vorhanden sind, gibt Ihre Abfrage nur 1 Datensatz zurück. Mit meiner Abfrage würde es alle Zeilen zurückgeben, die ID 1452 und maximalen Zeitstempel haben. – JRG

0

Versuchen Sie, diese

SELECT * FROM software_image_builds where software_image_id=1452 
    AND timestamp = (SELECT MAX(timestamp) as timestamp from 
    software_image_builds 
where software_image_id=1452) 

Check in Geige http://sqlfiddle.com/#!9/729532/44

+0

, können Sie überprüfen, http://sqlfiddle.com/#!9/6ed643/1, ich bin auf der Suche nach der Maxtimestamp Reihe für eine Gruppe von software_image_build und variante – user3508811

+0

lass es mich überprüfen .. – Shibon

+0

du brauchst gruppe von allem ist es – Shibon

Verwandte Themen