1

この質問の言い方はわかりませんが、説明するのは簡単です。

次のようなテーブルがあるとします。

+------+----------+-------+
| | ユーザー | 結果 | レベル |
+------+----------+-------+
| | 1 | 勝利 | 1 |
| | 1 | 勝利 | 2 |
| | 1 | 勝利 | 3 |
| | 2 | 勝利 | 1 |
| | 2 | 敗北 | 2 |
| | 3 | 敗北 | 1 |
| | 4 | 敗北 | 1 |
| | 5 | 敗北 | 1 |
+------+----------+-------+

レベル3で勝利した「ユーザー」のみを選択できるようにしたいので、選択は次のようになります。

+------+----------+-------+
| | ユーザー | 結果 | レベル |
+------+----------+-------+
| | 1 | 勝利 | 1 |
| | 1 | 勝利 | 2 |
| | 1 | 勝利 | 3 |
+------+----------+-------+

残りはレベル 3 を完了していないため返却されません。

どうもありがとう!わかりやすく説明していただければ幸いです。

4

2 に答える 2

5

レベル 3 で勝利したユーザーを知りたいだけの場合:

SELECT User FROM my_table WHERE Result = 'Victory' AND Level = 3

ただし、(あなたが示したように) これらのユーザーのすべての結果が必要な場合 (以下のコメントについて @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
于 2012-05-30T22:06:55.943 に答える
3

existsたとえば、次のような句を使用できます。

select  *
from    scores s
where   exists
        (
        select  *
        from    scores vl3
        where   vl3.user = s.user
                and vl3.Result = 'Victory'
                and vl3.Level >= 3
        )
于 2012-05-30T22:21:45.453 に答える