2016-02-27 21 views
0

所以我想做的事:獲取來自不同teamId火柴行不是打用戶

我想與敵人冠軍(不同teamId)爲每每一行與ID 42999456起到匹配召喚。

例如:

summonerId:42999456
matchId:2528256239

將返回

+------------+------------+------------+--------+--------+ 
| matchId | summonerId | championId | teamId | winner | 
+------------+------------+------------+--------+--------+ 
| 2528256239 | 23364213 |  412 | 200 |  0 | 
| 2528256239 | 34928637 |  429 | 200 |  0 | 
| 2528256239 | 40909308 |   4 | 200 |  0 | 
| 2528256239 | 50717471 |  122 | 200 |  0 | 
| 2528256239 | 52439549 |   60 | 200 |  0 | 

(請注意,我不希望只查詢1 matchId,我要查詢所有比賽)。

表看起來像這樣:

+------------+------------+------------+--------+--------+ 
| matchId | summonerId | championId | teamId | winner | 
+------------+------------+------------+--------+--------+ 
| 2528256239 | 23364213 |  412 | 200 |  0 | 
| 2528256239 | 23949601 |   32 | 100 |  1 | 
| 2528256239 | 30032566 |  127 | 100 |  1 | 
| 2528256239 | 34519064 |  236 | 100 |  1 | 
| 2528256239 | 34928637 |  429 | 200 |  0 | 
| 2528256239 | 35157572 |   91 | 100 |  1 | 
| 2528256239 | 40909308 |   4 | 200 |  0 | 
| 2528256239 | 42999456 |  201 | 100 |  1 | 
| 2528256239 | 50717471 |  122 | 200 |  0 | 
| 2528256239 | 52439549 |   60 | 200 |  0 | 
| 2528415543 | 26264559 |  236 | 100 |  1 | 
| 2528415543 | 30032566 |   79 | 100 |  1 | 
| 2528415543 | 30066298 |  203 | 200 |  0 | 
| 2528415543 | 30144484 |  201 | 200 |  0 | 
| 2528415543 | 30420315 |   81 | 200 |  0 | 
| 2528415543 | 35666995 |  238 | 100 |  1 | 
| 2528415543 | 42999456 |  117 | 100 |  1 | 
| 2528415543 | 55777006 |   75 | 100 |  1 | 
| 2528415543 | 71020371 |  114 | 200 |  0 | 
| 2528415543 | 75067455 |   1 | 200 |  0 | 
| 2528508209 | 20859869 |   41 | 200 |  1 | 
| 2528508209 | 20926263 |   51 | 100 |  0 | 
| 2528508209 | 21489056 |   81 | 200 |  1 | 
| 2528508209 | 30032566 |   62 | 100 |  0 | 
| 2528508209 | 31429371 |   19 | 200 |  1 | 
| 2528508209 | 34198484 |  103 | 100 |  0 | 
| 2528508209 | 39520185 |   32 | 100 |  0 | 
| 2528508209 | 42954909 |  201 | 200 |  1 | 
| 2528508209 | 42999456 |   40 | 100 |  0 | 
| 2528508209 | 44449359 |  236 | 200 |  1 | 
| 2528567430 | 22896699 |   64 | 100 |  0 | 
| 2528567430 | 27716534 |   90 | 200 |  1 | 
| 2528567430 | 30032566 |  157 | 200 |  1 | 
| 2528567430 | 30161338 |   12 | 100 |  0 | 
| 2528567430 | 33288363 |   30 | 100 |  0 | 
| 2528567430 | 38554025 |   81 | 100 |  0 | 
| 2528567430 | 40124474 |   62 | 200 |  1 | 
| 2528567430 | 42999456 |   26 | 200 |  1 | 
| 2528567430 | 61287205 |   92 | 100 |  0 | 
| 2528567430 | 69117699 |  104 | 200 |  1 | 
| 2528778889 | 19128606 |  102 | 100 |  0 | 
| 2528778889 | 21226478 |   16 | 100 |  0 | 
| 2528778889 | 24671894 |   74 | 100 |  0 | 
| 2528778889 | 30032566 |   31 | 200 |  1 | 
| 2528778889 | 42728001 |  157 | 200 |  1 | 
| 2528778889 | 42999456 |  201 | 200 |  1 | 
| 2528778889 | 43160768 |  236 | 200 |  1 | 
| 2528778889 | 44918136 |   55 | 100 |  0 | 
| 2528778889 | 52104644 |   51 | 100 |  0 | 
| 2528778889 | 52420228 |   24 | 200 |  1 | 
| 2529734554 | 19611148 |  412 | 100 |  1 | 
| 2529734554 | 27427187 |  420 | 100 |  1 | 
| 2529734554 | 27926072 |  117 | 200 |  0 | 
| 2529734554 | 30032566 |   77 | 200 |  0 | 
| 2529734554 | 33899765 |   4 | 200 |  0 | 
| 2529734554 | 40093026 |  245 | 100 |  1 | 
| 2529734554 | 42999456 |   40 | 200 |  0 | 
| 2529734554 | 44385431 |   67 | 200 |  0 | 
| 2529734554 | 49240203 |   81 | 100 |  1 | 
| 2529734554 | 80637139 |   25 | 100 |  1 | 
| 2529747312 | 19648659 |   90 | 200 |  1 | 
| 2529747312 | 30032566 |  114 | 200 |  1 | 
| 2529747312 | 33120079 |   67 | 200 |  1 | 
| 2529747312 | 35688371 |   32 | 100 |  0 | 
| 2529747312 | 35817488 |  106 | 200 |  1 | 
| 2529747312 | 36068030 |   41 | 100 |  0 | 
| 2529747312 | 40406867 |  412 | 100 |  0 | 
| 2529747312 | 42999456 |   44 | 200 |  1 | 
| 2529747312 | 43212358 |  236 | 100 |  0 | 
| 2529747312 | 52238049 |   8 | 100 |  0 | 
| 2529802806 | 20929372 |  105 | 200 |  1 | 
| 2529802806 | 24507439 |  236 | 200 |  1 | 
| 2529802806 | 24849750 |  238 | 100 |  0 | 
| 2529802806 | 28026768 |  117 | 100 |  0 | 
| 2529802806 | 30032566 |  223 | 200 |  1 | 
| 2529802806 | 31689726 |   67 | 100 |  0 | 
| 2529802806 | 35685814 |   92 | 100 |  0 | 
| 2529802806 | 40621123 |  254 | 100 |  0 | 
| 2529802806 | 42999456 |   40 | 200 |  1 | 
| 2529802806 | 56868633 |   64 | 200 |  1 | 
| 2530087947 |  108807 |   16 | 200 |  1 | 
| 2530087947 | 19409641 |   84 | 100 |  0 | 
| 2530087947 | 21422420 |   81 | 100 |  0 | 
| 2530087947 | 23851356 |  112 | 200 |  1 | 
| 2530087947 | 25847381 |   96 | 200 |  1 | 
| 2530087947 | 27575895 |   11 | 200 |  1 | 
| 2530087947 | 39058809 |   64 | 100 |  0 | 
| 2530087947 | 39409025 |   61 | 100 |  0 | 
| 2530087947 | 42999456 |   44 | 100 |  0 | 
| 2530087947 | 54220113 |   41 | 200 |  1 | 
| 2537795256 | 19118675 |   40 | 200 |  1 | 
| 2537795256 | 20071645 |   42 | 200 |  1 | 
| 2537795256 | 29826523 |   11 | 100 |  0 | 
| 2537795256 | 30032566 |   15 | 100 |  0 | 
| 2537795256 | 37639463 |   31 | 100 |  0 | 
| 2537795256 | 37741313 |  245 | 200 |  1 | 
| 2537795256 | 42999456 |  117 | 100 |  0 | 
| 2537795256 | 46537422 |   80 | 200 |  1 | 
| 2537795256 | 71466951 |  238 | 200 |  1 | 
| 2537795256 | 76797025 |   75 | 100 |  0 | 

回答

1

做這件事的方法是使用NOT EXISTS

SELECT matchId, summonerId, championId, teamId, winner 
FROM mytable AS t1 
WHERE matchId = 2528256239 AND 
     NOT EXISTS (SELECT 1 
        FROM mytable AS t2 
        WHERE t2.summonerId = 42999456 AND 
         t1.matchId = t2.matchId AND 
         t1.teamId = t2.teamId) 

Demo here

你也可以使用一個LEFT JOIN

SELECT t1.matchId, t1.summonerId, t1.championId, t1.teamId, t1.winner 
FROM mytable AS t1 
LEFT JOIN mytable AS t2 
    ON t1.matchId = t2.matchId AND t1.teamId = t2.teamId AND t2.summonerId = 42999456 
WHERE t1.matchId = 2528256239 AND t2.matchId IS NULL 

Demo here

+0

非常感謝! – Itrulia