Les sous-requêtes sont des requêtes imbriquées dans une autre requête. Les sous-requêtes vous permettent de séparer chaque partie de la déclaration et de fournir une alternative plus lisible pour les opérations qui exigeraient complexe effectuer des jointures et unions sans sous-requêtes. Sous-requêtes MySQL peuvent retourner une valeur unique , à une rangée , colonne unique ou une table. La syntaxe
La syntaxe de base pour une sous-requête est la suivante:
SELECT * FROM table WHERE Columna = (SELECT ColumnB FROM table2 ) ;
sous-requêtes doit être un SELECT, INSERT , UPDATE, DELETE , régler ou de faire déclaration, et vous ne pouvez pas modifier une table et sélectionnez -le dans la sous-requête.
sous-requêtes se trouvent généralement sur le côté droit de la clause WHERE, qui peut contenir tout de la comparaison et les opérateurs logiques suivants : = ( égal ) , < > (différent ) , <= ( inférieur ou égal ) ,> = ( supérieur ou égal ) , <(inférieur à ) , > ; (supérieur à) , eNTRE ( valeur comprise entre deux valeurs ) pas ( logique) , ET ( logique ET ) , OR ( OU logique ) . Ils peuvent également contenir la DISTINCT, GROUP BY , ORDER BY et les mots clés de limites. Ils peuvent même être utilisés conjointement avec les états adhérer. Outre les restrictions ci-dessus , il ya très peu de limitations imposées aux sous-requêtes dans MySQL.
Il n'est même pas une restriction sur le nombre de sous-requêtes qui peuvent être trouvés dans un communiqué. Tant que vous placez chaque sous-requête entre parenthèses , vous pouvez avoir autant de requêtes imbriquées que vous devez trouver vos données. Plus d'informations sur les sous-requêtes peuvent être trouvées dans le manuel de référence de MySQL (voir Ressources)
Exemple
Supposons que vous ayez deux tables : . Le premier contient le prénom, nom, Adresse et Code postal des membres de votre liste d'envoi , le second contient la ville , État et code postal . Si vous voulez trouver les noms des membres qui vivent en Géorgie , vous pouvez utiliser plusieurs instructions SELECT . La première déclaration serait de trouver les codes postaux pour la Géorgie :
SELECT zip code postal DE WHERE state = "Georgia " ;
alors vous taperez une instruction select pour chaque code postal retourné :
SELECT fname , lname dE adresse où zip = " [ code postal ]";
Cette méthode est très fastidieuse et sujette à erreur. Il est facile de rater un code postal , surtout si il ya beaucoup d'entre eux
Un moyen plus facile de remplir votre tâche serait de publier la première déclaration comme une sous-requête à la deuxième déclaration : .
< P > SELECT fname , lname dE adresse où zip = (SELECT zip code postal dE WHERE state = "Georgia "); .
Cette requête va renvoyer tous les membres de votre liste de diffusion qui vivent en Géorgie avec une requête < br > Photos