2016-08-18 14 views
0

userID=4とステータス=使用中、保留中または削除済みのときにデータを取得する必要があります。 しかし、私は理由がわからない余分なデータを取得しています。私は複数のAND/ORロジックが台無し

userid=3 

MySQLのクエリから余分なデータを取得しています

は次のとおりです。

SELECT * FROM `registered_bicycle` 
WHERE (`userID`='4') 
    AND (`status`='In Use') 
    OR (`status`='Pending') 
    OR (`status`='Deleted') 

enter image description here

答えて

0

は、代わりにこれを試してみてください:

SELECT 
    * 
FROM 
    `registered_bicycle` 
WHERE `userID` = '4' 
AND `status` IN('In Use','Pending','Deleted') 

あなたand/or適切なカッコがないため、ロジックが混ざりました。また、複数のOR句の代わりにINを使用することもできます。

ところで

INOR

+0

でデータを返します、中括弧の間AND後の部分を入れて、私は私のミスを理解する必要があり、ありがとうございました。何かを学ぶ新しい –

+0

あなたは大歓迎です。また、複数の 'および/または'論理を使用している間は注意してください。かっこを使用する必要があります。また、複数の 'OR'節を1つの' IN'でバイパスすることができます。 – 1000111

0

のちょうど短い形式はこれを試している:

SELECT * FROM `registered_bicycle` 
WHERE (`userID`='4') 
    AND `status`IN('In Use','Pending','Deleted') 
+0

ありがとう、私は間違いを理解しています。新しいことを学ぶ –

1

あなたはORステートメントarroundの(...)を使用する必要があります。

SELECT * FROM `registered_bicycle` 
WHERE (`userID`='4') 
    AND (`status`='In Use' 
    OR `status`='Pending' 
    OR `status`='Deleted') 

かつかいますIN機能

+0

ありがとう、私は間違いを理解している。何か新しいことを学ぶ –

1

それ以外の場合はuserID=4 OR status=xy

SELECT * FROM `registered_bicycle` WHERE (`userID`='4') AND (
     (`status`='In Use') 
    OR (`status`='Pending') 
    OR (`status`='Deleted') 
) 
関連する問題