0

次の SQL ステートメントを見てください。

select * 
from PhoneData 
where  names = 'yohan' 
    and nickName = 'yoises' 
    and mobileNumber1 = 0000000000 or mobileNumber2 = 0000000000

ここで、問題があります。つまり、電話番号が同じであるすべての結果が返されます。同じ電話番号の行が 2 行あるため、名前、ニックネーム、すべてを無視して両方を返します。これは「or」ステートメントによるものだと思います。どうすればこれを解決できますか? name=yohan と mobileNumber1 または mobileNumber2 = 000000000 の詳細を取得する必要があります。

4

2 に答える 2

9

次のように、OR ステートメントを括弧で囲む必要があります。

select * 
from PhoneData 
where names = 'yohan' 
    and nickName = 'yoises' 
    and (mobileNumber1 = 0000000000 
        or mobileNumber2 = 0000000000)

ブラケットがなければ、効果的にこれを行っています:

select * 
from PhoneData 
where (names = 'yohan' 
    and nickName = 'yoises' 
    and mobileNumber1 = 0000000000) 
        or mobileNumber2 = 0000000000
于 2012-08-09T15:36:39.397 に答える
3

括弧がありません:

select * from PhoneData where  names = 'yohan' and nickName = 'yoises' and (mobileNumber1 = 0000000000 or mobileNumber2 = 0000000000)

AND演算子には異なる優先順位があるため、ORそれらを組み合わせるときは明示的であることを確認してください。

于 2012-08-09T15:38:00.493 に答える