0

ここに画像の説明を入力

このクエリを使用すると

mysql> select movieid from rating where stars < any (select stars from rating where 

movieid=103);

出力は以下のとおりです

movieid 

 101 
 108    
 104 

以下のクエリを実行すると、結果は同じようです。何故ですか?

> mysql> select movieid,stars from rating where stars <all (select stars
> from rating where movieid=103);

+---------+-------+
| movieid | stars |
+---------+-------+
|     101 |     2 |
|     108 |     2 |
|     104 |     2 |
+---------+-------+

all キーワードは、星の値 2未満の結果を返すべきではありませんか? この場合、これは空のセットになります。

ここにキャプチャがあります

ここに画像の説明を入力

4

2 に答える 2

1

キャプチャのデータは、以前に投稿したデータとは異なります。movieid = 103 の両方の行に 3 つの星があります (3 と 2 ではなく)。

あなたが提供した最初のデータについては:

「any」を使用した最初のクエリは次と同等です。

select movieid from rating where stars < 2 OR stars < 3

結果は次のとおりです。

101
103
108
104

2 番目のクエリは次と同等です。

select movieid from rating where stars < 2 AND stars < 3

結果は空のセットです。

スクリーン キャプチャ データの場合:

どちらのクエリも次と同等です。

select movieid from rating where stars < 3

結果は次のとおりです。

101
108
104
于 2013-04-28T15:42:18.917 に答える
0

わかりませんが、これを書いていたら、次のようにしたでしょう。

/* is this what you want by "any" */
select movieid,stars from rating where stars < (select max(stars) from rating where movieid=103);

/* is this what you want by "all" */
select movieid,stars from rating where stars < (select min(stars) from rating where movieid=103);

デモ

于 2013-04-28T15:19:35.253 に答える