2017-04-09 6 views
0

Ich bin auf der Suche nach einer SQL-Abfrage, die x Zeilen auswählt, wo die Spalten nur eindeutige Werte haben.Auswahl eindeutiger Werte aus 2 Spalten

Tabelle genannt wird keezdrives_played die Säulen genannt: team_id und opponents_id

[1]

Dies ist, wie es aussehen sollte [Datenbank Bild.]: [Beispiel] [2]

Wo team_id und opponents_id eindeutige Werte haben

+0

Verwendung distinct (oppnents_id) wollen –

Antwort

0

Sie können es mit einer Abfrage wie folgt tun:

SELECT t.team_id ,o.opponents_id FROM yourTAble t 
INNER JOIN (
    SELECT team_id,opponents_id FROM yourTAble 
    GROUP BY opponents_id 
    HAVING count(*) = 1 
) AS o ON o.team_id = t.team_id 
GROUP BY t.team_id 
HAVING count(*) = 1; 

Probe

mysql> select * from yourTable; 
+---------+--------------+ 
| team_id | opponents_id | 
+---------+--------------+ 
|  1 |   5 | 
|  1 |   6 | 
|  2 |   7 | 
|  2 |   80 | 
|  3 |   9 | 
|  4 |   11 | 
|  4 |   22 | 
|  8 |   5 | 
+---------+--------------+ 
8 rows in set (0,00 sec) 

mysql>  SELECT t.team_id ,o.opponents_id FROM yourTAble t 
    ->  INNER JOIN (
    ->   SELECT team_id,opponents_id FROM yourTAble 
    ->   GROUP BY opponents_id 
    ->   HAVING count(*) = 1 
    -> ) AS o ON o.team_id = t.team_id 
    ->  GROUP BY t.team_id 
    ->  HAVING count(*) = 1; 
+---------+--------------+ 
| team_id | opponents_id | 
+---------+--------------+ 
|  3 |   9 | 
+---------+--------------+ 
1 row in set (0,00 sec) 

mysql> 

siehe Kommentar

mysql> SELECT count(*) AS cnt , team_id 
    -> FROM keezdrives_played 
    -> GROUP BY team_id 
    -> ; 
+-----+---------+ 
| cnt | team_id | 
+-----+---------+ 
| 4 | 2281 | 
| 4 | 2282 | 
| 4 | 2283 | 
| 4 | 2284 | 
| 4 | 2285 | 
| 4 | 2286 | 
+-----+---------+ 
6 rows in set (0,00 sec) 

mysql> 

man versuchen, mehr

SELECT team_id,opponents_id 
FROM keezdrives_played 
GROUP BY CONCAT(team_id, '-', opponents_id) 
HAVING count(*) = 1; 

versuchen letzten

SELECT * FROM (
    SELECT t.team_id ,t.opponents_id 
    FROM keezdrives_played t 
    GROUP BY t.team_id 
    ) r 
GROUP BY r.opponents_id; 
+0

schreiben als SQL-Dump Ihre Beispieltabelle Sie –

+0

ich es in meiner Antwort hinzufügen zu helfen. Sie sehen, dass die Team-ID nicht eindeutig ist. es gibt 4 reihen von jedem enty –

+0

oder suchst du eine einzigartige kombination nur von beiden felder –

0

Ich hoffe, das ist, was Sie

SELECT DISTINCT team_id ,opponents_id FROM keezdrives_played where drive_id=144; 
+0

Sie haben diese zwei getan Schritt. Dies ist der erste Schritt, dann ist der zweite Schritt ein eindeutiger erster Schritt, dann haben Sie Ihr Ergebnis. Aus diesem Grund müssen Sie Unterabfragen benötigen. –

+0

Ich hoffe, wenn Sie Unterabfrage verwenden, erhalten Sie Ihr richtiges Ergebnis –

Verwandte Themen