2012-05-09 7 views
1

私は次のクエリを持っている:私は最後のAND句(AND S.alert_level> = 90)を離陸した場合、予想通りはmysqlの右に参加

SELECT * FROM my_users as U 
RIGHT JOIN subscribers AS S ON S.userid = U.user_id 
WHERE S.approved > 0 AND S.channel_id = 1 AND S.alert_level >= 90 

検索が正確に動作します。最後のAND句を残して、空の結果セットを取得します。

明らかに、私は、正しいalert_levelを持っていて、すべてが90だったので、2人のユーザーを返すはずだったユーザーIDが返されることを確認しました...そして、S.alert_levelはsmallint(6)です。

私はここで何かが分かりませんか?

ありがとうございます!

+2

これは奇妙に聞こえる。あなたは「あなたが正しいalert_levelを持っていることを確認するために加入者テーブルをチェックしました」と言っていますが、なぜそれをする必要がありますか?最後のAND節(AND S.alert_level> = 90)を取り除こうとしたときからalert_levelが既に表示されているはずです。それを確認すると思いませんでしたか?今すぐチェックできますか? –

+0

Bang!うん...もう一組の目があった! – ppetree

+0

私はあなたがそれを編集し、そして/またはそれを受け入れる場合に答えとして再投稿しました。 –

答えて

1

チェックこのクエリの結果:その結果セットの行ごとに返されるS.alert_levelの値に

SELECT * FROM my_users as U 
RIGHT JOIN subscribers AS S ON S.userid = U.user_id 
WHERE S.approved > 0 AND S.channel_id = 1 

ご注意ください。それはおそらく90を超えていないでしょう。それはなぜ最後の条件を追加すると行がないのかを説明します。