【发布时间】:2015-10-19 15:20:33
【问题描述】:
如何选择所有尚未与 'alpha' 配对的玩家? (输出='伽玛')。即使对表为空,它也应该工作。
table: players
+----------+-------+
| playerID | name |
+----------+-------+
| 1 | alpha |
| 2 | beta |
| 3 | gamma |
+----------+-------+
table: pairs
+---------+---------+
| player1 | player2 |
+---------+---------+
| 2 | 3 |
| 1 | 2 |
+---------+---------+
我已经挣扎了好几个小时了。例如如果我这样做
SELECT p.*, r.*
FROM players p
JOIN pairs r
ON (player1 = playerID) OR (player2 = playerID)
WHERE
((r.player1 != 1) AND (r.player2 != 1));
输出是“beta”和“gamma”。在连接中,“beta”出现两次(每次与“alpha”和“gamma”配对)。并且 WHERE 条件消除了一行“beta”。我想要的是消除所有“beta”行。我是新手,尝试了 GROUP BY、HAVING 等的各种组合。我无法让它工作。
【问题讨论】:
-
你还在努力解决这个问题吗?
-
没有。我以某种方式更喜欢我的解决方案(在我的编辑中)而不是答案,因为我不使用“NOT IN”。但我非常感谢为以下答案所做的努力。谢谢
-
很高兴它的工作!您始终可以回答自己的问题并接受它,这可能对未来的读者更有帮助,他们会将您的编辑误认为是问题的一部分而不是解决方案。
-
如果答案填补了一些让你解决问题的空白,至少你可以给他们一个支持,因为他们投入了时间和精力来帮助你,只是没有得到任何代表因为你不“喜欢”他们的答案。
-
作为McAdam331 said,请勿编辑您的帖子以包含答案。相反,将其发布为答案。您也可以投票并引用任何帮助您找出问题的答案/cmets。我已将帖子回滚以排除已编辑的答案。随意将其作为实际答案发布。