2012-07-17 4 views
4

Supposons que j'ai cette déclaration:Ordre des opérations pour SQL?

SELECT * FROM MyTable WHERE a = 1 or b = 2 and c = 3 

Est-ce que cela veut dire: (a = 1) OU (b = 2 et c = 3) ou est-ce que cela signifie (a = 1 b = 2) ET c = 3? Puis-je changer ce que cela signifie, c'est-à-dire exécuter le bloc opératoire avant l'ET ou est-ce impossible?

+0

'(a = 1) OU (b = 2 et c = 3)' – alfasin

+0

Ordre des opérations ne suit pas vraiment ce. Il retournera n'importe quoi où a = 1 et c = 3 ou n'importe quoi où b = 2 donc c'est plus un '(a = 1 et c = 3) ou b = 2' – jeschafe

+0

désolé je sais que ce n'est pas le meilleur exemple, mon vrai problème mondial est assez massif et trop difficile à résumer de manière compacte, je devais juste savoir comment regrouper les opérations ensemble – tweetypi

Répondre

10

De Technet:

Lorsque plus d'un opérateur logique est utilisé dans une déclaration, et opérateurs sont évalués en premier. Vous pouvez modifier l'ordre d'évaluation en utilisant des parenthèses.

Donc oui, cela signifie (a = 1) OR (b = 2 AND c = 3).

Vous pouvez forcer le comportement que vous voulez en écrivant les parenthèses que vous avez fait ci-dessus: (a = 1 OR b = 2) AND c = 3