2016-01-19 16 views
5

Ich habe eine Tabelle mytable wie unten;MySQL-Abfrage gibt doppelte Zeilen zurück

╔═════════╦══════╦═════╗ 
║ product ║ tag ║ lot ║ 
╠═════════╬══════╬═════╣ 
║ 1111 ║ 101 ║ 2 ║ 
║ 1111 ║ 102 ║ 5 ║ 
║ 2222 ║ 103 ║ 6 ║ 
║ 3333 ║ 104 ║ 2 ║ 
║ 4444 ║ 101 ║ 2 ║ 
║ 5555 ║ 101 ║ 2 ║ 
║ 5555 ║ 102 ║ 5 ║ 
║ 6666 ║ 102 ║ 2 ║ 
║ 6666 ║ 103 ║ 5 ║ 
║ 7777 ║ 101 ║ 2 ║ 
║ 7777 ║ 102 ║ 5 ║ 
║ 7777 ║ 103 ║ 6 ║ 
║ 8888 ║ 101 ║ 1 ║ 
║ 8888 ║ 102 ║ 3 ║ 
║ 8888 ║ 103 ║ 5 ║ 
║ 9999 ║ 101 ║ 6 ║ 
║ 9999 ║ 102 ║ 8 ║ 
╚═════════╩══════╩═════╝ 

Ich habe den Eingang 101, 102. Ich möchte die Ausgabe wie;

2,5 
6,8 

Ich habe eine Abfrage wie;

select group_concat(lot order by lot) 
from `mytable` 
group by product 
having group_concat(tag order by tag) = '101,102'; 

Es gibt zurück;

2,5 
2,5 
6,8 

Statt zwei 2,5, möchte ich nur eine, die Vermeidung von doppelten Zeilen. Wie kann ich das machen? Hier

ist die Geige http://sqlfiddle.com/#!9/7a78bb/1/0

+5

versuchen 'select distinct Group_concat (Losauftrag durch das Los) ' –

+0

TIL, dass SQLFiddle eine Sache ist. Genial. – Draco18s

+0

Mögliches Duplikat von [Die MySQL-Abfrage gibt beim Abrufen von Zeilen basierend auf bestimmten Tag-Kombinationen unerwünschte Zeilen zurück] (http://stackoverflow.com/questions/34885425/mysql-query-returns-unwanted-rows-on-fetching-rows-based- on-specific-tag-combina) – CodeGodie

Antwort

6

Wenn Sie distinct dann

select distinct group_concat(lot order by lot) 
from `mytable` 
group by product 
having group_concat(tag order by tag) = '101,102'; 
0

Sie müssen nur DISTINCT verwenden Dubletten zu beseitigen

select DISTINCT group_concat(lot order by lot) 
from `mytable` 
group by product 
having group_concat(tag order by tag) = '101,102';