0

SQLクエリで何が間違っていますか? 値が存在する場合でも、常に空の行を返します。

これが私のクエリです:

SELECT * 
FROM   users 
WHERE  user_theme_id IN ( 9735, 9325, 4128 ) 
       AND ( user_date_created BETWEEN '2013-06-04' AND '2013-06-10' );

元のクエリを 1 つずつ切り取ってみましたが、結果が得られました。これが最初のものです:

SELECT * FROM users WHERE user_theme_id IN (9735, 9325, 4128 );

この結果に対して 3 行を取得しました。添付のスナップショットを参照してください: ここに画像の説明を入力

さて、次に実行するクエリは次のとおりです。

SELECT * 
FROM   users 
WHERE  user_date_created BETWEEN '2013-06-04' AND '2013-06-10'; 

これで3つの結果が得られます。添付のスナップショットを参照してください: ここに画像の説明を入力

ちなみに、BETWEEN を使用するこの sql は 4 行を返すはずですが、3 行しか返しません。作成日が 2013-06-10 08:27:43 のデータは返されません。

元のクエリのどこが間違っているのですか? 常に空の行が返されるのはなぜですか?

4

2 に答える 2

1

AND異なる where 句を別々に実行して結果を取得している場合、 2 つのwhere句が回答を返すことは保証されません。while の結果を得るには、行の交差が必要ANDです。データを検証し、重複が存在するかどうかを確認する必要があります。

于 2013-06-10T16:01:47.947 に答える