我不确定如何说出这个问题,但更容易解释.
如果我有一个看起来像这样的表:
+-------+----------+-------+ | User | Result | Level | +-------+----------+-------+ | 1 | Victory | 1 | | 1 | Victory | 2 | | 1 | Victory | 3 | | 2 | Victory | 1 | | 2 | Defeat | 2 | | 3 | Defeat | 1 | | 4 | Defeat | 1 | | 5 | Defeat | 1 | +-------+----------+-------+
我希望能够只选择在第3级获胜的用户.因此选择将返回:
+-------+----------+-------+ | User | Result | Level | +-------+----------+-------+ | 1 | Victory | 1 | | 1 | Victory | 2 | | 1 | Victory | 3 | +-------+----------+-------+
其他人不会被退回,因为他们没有完成3级.
非常感谢!我希望我能清楚地解释清楚.
如果您只是想知道哪些用户在第3级获胜:
SELECT User FROM my_table WHERE Result = 'Victory' AND Level = 3
Run Code Online (Sandbox Code Playgroud)
但是,如果(如您所示)您想要所有这些用户的结果(感谢@Andomar和@ConradFrix在下面的评论):
SELECT DISTINCT m1.*
FROM my_table AS m1
JOIN my_table AS m2 USING (User)
WHERE m2.Result = 'Victory'
AND m2.Level = 3
Run Code Online (Sandbox Code Playgroud)