2016-07-27 10 views
1

Ich habe eine Liste von Datensätzen wie folgt aus:MySQL-Gruppe durch die vollständigste Aufzeichnung wählen

id state description date 
3340 KO  test   2016-07-27 
3340 KO     2016-07-27 
3340 AQ  blalba  2016-07-27 
3340 AC     2016-07-27 

ich zu einer Gruppe müssen vom Staat die vollständigste Bilanz zwischen duplizierten Staaten Datensätze wie das Ergebnis der Wahl unter:

id state description date 
3340 KO  test   2016-07-27 
3340 AQ  blalba  2016-07-27 
3340 AC     2016-07-27 
+0

was meinst du mit "den vollständigste"? wenn beide Datensätze ein Beschreibungsfeld haben? –

Antwort

0

Diese Arbeit um können Ihnen helfen, Ihr erwartetes Ergebnis zu erhalten:

SET @row_number = 0; 

SELECT id, `state`, `description`, `date` 
FROM (
    SELECT *, (@row_number:[email protected]_number + 1) AS num 
    FROM TestTable 
    ORDER BY IF (`description` <> '', 0, 1) 
    ) T 
GROUP BY id, `state` 

Working DEMO

Beispielausführung mit den Daten gegeben:

CREATE TABLE TestTable(id INT, `state` VARCHAR(2), `description` VARCHAR(100), `date` DATE); 

INSERT INTO TestTable (id, `state`, `description`, `date`) VALUES 
(3340, 'KO', ''  , '2016-07-27'), 
(3340, 'KO', 'test' , '2016-07-27'), 
(3340, 'AQ', 'blalba' , '2016-07-27'), 
(3340, 'AC', ''  , '2016-07-27'); 

SET @row_number = 0; 

SELECT id, `state`, `description`, `date` 
FROM (
    SELECT *, (@row_number:[email protected]_number + 1) AS num 
    FROM TestTable 
    ORDER BY IF (`description` <> '', 0, 1) 
    ) T 
GROUP BY id, `state` 
+1

vielen Dank, es funktioniert wie ein Charme :-) – user3348353

Verwandte Themen