| one | two |
-------------
| A | 1 |
| A | 2 |
| B | 1 |
| B | 3 |
| C | 1 |
| C | 4 |
Ich möchte keine Wiederholungen in jeder Spalte in einer Abfrage erhalten, so dass die Standard- SELECT DISTINCT one,two FROM table;
oder SELECT * FROM table GROUP BY one,two;
funktioniert nicht ganz, denn es ist für verschiedene in allen Zeilen sieht, die in Dieser Fall würde alle 6 Zeilen zurückgeben.mehrspaltigen verschieden in mysql
Idealerweise ich suche:
| one | two |
-------------
| A | 1 |
| B | 3 |
| C | 4 |
In PHP (etc.), würde ich tun dies nur mit einem Array für jede Spalte, und wenn eine Spalte vor dann die Zeile überspringen verwendet wurde. Ich bin mir jedoch nicht sicher, wie ich das in MySQL implementieren soll.
SELECT * FROM (SELECT * FROM table GROUP BY one) GROUP BY two
- fast funktioniert. Da die äußere Abfrage jedoch nicht alle Alternativen anzeigt, werden gültige Optionen fehlschlagen, dh der innere Wert wird auf A, B, C reduziert, könnte aber auch 1s für Spalte zwei auswählen, was bedeuten würde, dass die zweite GROUP BY dies würde dann kollabiere es auf 1 Reihe!
Ich weiß, dass die Reihenfolge der Duplizierungsprüfung eine Auswirkung auf die exakten zurückgegebenen Zeilen hat - nicht besorgt darüber - ich möchte nur einen guten Querschnitt von Zeilen mit minimalen ähnlichen Zeilen.
Erklären Sie Ihre Anfrage Regel. Wenn es zwei Zeilen mit dem gleichen "one" -Feld gibt, welches Sie in der Ausgabe haben wollen? –
In Ihrem Beispiel haben Sie 'A - 1' gewählt, was das erste Spiel ist, aber in den anderen beiden haben Sie die zweiten Spiele gewählt. Kannst du deine Entscheidung für das eine oder andere festigen? –
Zusätzlich zu Clements Frage - was passiert, wenn 'C' in Spalte eins nur mit Werten in Spalte zwei auftritt, die bereits mit 'A' und 'B' aufgetreten sind? – quosoo