2017-04-09 91 views
0

我正在查找一个SQL查询,该查询选择列最终只有唯一值的x行。从2列中选择唯一值

表被称为keezdrives_played 列被称为:TEAM_ID和opponents_id

[1]

这是应该如何像[数据库的图片。]: [实施例] [2]

凡TEAM_ID和opponents_id具有唯一值

+0

使用不同(oppnents_id) –

回答

0

你可以用这样的查询做到这一点:

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; 

样品

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> 

见注释

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> 

一个尝试更多

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

最后尝试

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

发表您的示例表作为SQL转储,以帮助您 –

+0

我有我的答案添加。你会发现team_id不是唯一的。有4行,每行enty –

+0

的还是你寻找一个独特的组合只有这两个领域的 –

0

我希望这是你想要的

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

你做这个两步。这是第一步,然后第二步是不同的第一步结果,然后获得结果。出于这个原因,你必须需要子查询。 –

+0

我希望如果你使用子查询,那么你得到适当的结果 –