Comment utiliser et pas dans les prédicats dans les états SQL

La DANS et PAS DEDANS SQL prédicats accord avec si les valeurs spécifiées (tels que OU, WA, et ID) sont contenues dans un ensemble particulier de valeurs (telles que les États des États-Unis).

Vous pouvez, par exemple, avoir un tableau qui répertorie les fournisseurs d'un produit que vos achats de l'entreprise sur une base régulière. Vous voulez connaître les numéros de téléphone des fournisseurs situés dans le Pacifique Nord-Ouest. Vous pouvez trouver ces numéros en utilisant des prédicats de comparaison, tels que ceux indiqués dans l'exemple suivant:

Entreprise SELECT, PhoneFROM SUPPLIERWHERE État = 'ou' ou État = 'WA' OU État = 'ID' -

Vous pouvez également utiliser la DANS prédicat pour effectuer la même tâche, comme suit:

SELECT Société, PhoneFROM SUPPLIERWHERE État IN ('OU', 'WA', 'id') -



Cette formulation est un peu plus compact que celui utilisant des prédicats de comparaison et logique OU. Elle élimine également toute confusion possible entre la logique OU l'opérateur et l'abréviation de l'état de l'Oregon.

La PAS DEDANS version de ce prédicat fonctionne de la même façon. Dire que vous avez des endroits en Californie, en Arizona et au Nouveau-Mexique, et d'éviter de payer la taxe de vente, vous voulez envisager d'utiliser des fournisseurs situés ailleurs que dans ces Etats. Utilisez la construction suivante:

Entreprise SELECT, PhoneFROM SUPPLIERWHERE Etat non («CA», «AZ», «NM») -

En utilisant le DANS mot-clé de cette façon vous permet d'économiser un peu de dactylographie - si (franchement) qui est pas vraiment un avantage. Vous pouvez faire le même travail en utilisant comparaisons prédicats.

Vous pouvez avoir une autre bonne raison d'utiliser la DANS prédicat plutôt que de comparaisons prédicats, même si l'aide DANS ne pas gagner beaucoup de typage: Vos SGBD implémente probablement les deux méthodes différentes, et l'une des méthodes peut-être nettement plus rapide que l'autre sur votre système.

Vous pouvez exécuter une comparaison de la performance sur les deux manières d'exprimer inclusion dans (ou l'exclusion de) un groupe et ensuite utiliser la technique qui produit le résultat plus rapide. Un SGBD avec un bon optimiseur choisira probablement la méthode la plus efficace, quel que soit le prédicat que vous utilisez.

La DANS mot-clé est précieux dans un autre domaine, aussi. Si DANS fait partie d'une sous-requête, le mot-clé vous permet d'extraire des informations à partir de deux tables pour obtenir des résultats que vous ne pouvez pas tirer à partir d'un seul tableau. Voici un exemple qui montre comment une sous-requête utilise le DANS mot-clé.

Supposons que vous souhaitez afficher les noms de tous les clients qui ont acheté le produit F-35 dans les 30 derniers jours. Noms de clients sont dans le tableau de la clientèle et des données de transaction de vente est dans le tableau de TRANSACT. Vous pouvez utiliser la requête suivante:

SELECT Prénom, LastNameFROM CUSTOMERWHERE CustomerID IN (SELECT CustomerIDFROM TRANSACTWHERE ProductID = 'F-35'AND TransDate> = (CurrentDate - 30)) -

L'intérieure SELECT des nids de table de transiger, dans l'externe SELECT de la table CLIENT. L'intérieure SELECT trouve le N ° de client les numéros de tous les clients qui ont acheté le produit F-35 dans les 30 derniers jours. L'extérieur SELECT affiche les noms et prénoms de tous les clients dont N ° de client est récupérée par l'intérieur SELECT.


» » » » Comment utiliser et pas dans les prédicats dans les états SQL