Cet article vous présente principalement les informations pertinentes sur l'auto-adhésion et l'association de mysql. Je pense qu'elle a une certaine valeur de référence pour tous les amis. si besoin, cela peut venir ci-dessous. Jetons un coup d'oeil.
1. Auto-connexion mysql
mysql a parfois besoin de se connecter (auto-connexion) lors de l'interrogation d'informations , nous devons donc définir un alias pour la table. Donnons un exemple. Ce qui suit est un tableau d'achat de produits. Nous devons trouver toutes les informations dont le prix d'achat est supérieur à Huihui.
De manière générale, lorsque nous voyons ce tableau, nous utilisons des instructions pour le faire fonctionner le plus rapidement possible :
SELECT * FROM shoping WHERE price>27
Comme vous pouvez l'imaginer, comment compliqué, c'est simple, que se passe-t-il si vous ne connaissez pas les données détaillées de la table de la base de données ou si la quantité de données est assez importante ? En tant qu'administrateur de base de données, nous devons utiliser d'autres méthodes pour trouver rapidement les données dont nous avons besoin.
Requête pas à pas
La manière la plus simple et la plus simple de penser l'opération :
SELECT price FROM shopping WHERE name='惠惠' //得出price查询结果为27 SELECT * FROM shopping WHERE price>27
Par rapport à l'auto- méthode de connexion Par rapport à cette méthode, cette méthode nécessite une intervention manuelle sur les résultats intermédiaires, ce qui n'est évidemment pas propice aux traitements automatiques dans le programme.
Méthode d'auto-connexion :
SELECT b.* from shopping as a,shopping as b where a.name='惠惠' and a.price<b.price order by b.id
Nous pouvons obtenir les informations de tableau suivantes :
Remarque :
Bien que les alias a et b aient des noms différents, il s'agit de la même table. Le but de la définition des alias est de faciliter leur suppression. .
Le b.* obtenu en exécutant select through (table intermédiaire) est le résultat final.
Sous-requête
La sous-requête est également une méthode couramment utilisée, qui consiste à imbriquer la sélection dans la sélection.
Le code d'implémentation est le suivant :
SELECT * FROM shopping WHERE price>(select price from 'shopping' where name='惠惠')
Les résultats sont les suivants : On constate que les résultats obtenus par les deux méthodes sont les mêmes :
2. REJOINDRE
JOINTION INTÉRIEURE
Le rôle principal L'association interne est lorsqu'il y a au moins une correspondance dans le tableau, renvoie l'ensemble de résultats. La jointure interne et la jointure ici ont la même fonction, elles sont donc introduites ensemble.
Voici deux tableaux, les tableaux de marchandises et de catégories :
SELECT * FROM goods INNER JOIN category ON goods.id=category.goods_id ORDER BY gods.id
Le résultat ressemble à ceci :
LEFT JOIN
Le mot-clé LEFT JOIN sera de gauche Tous les lignes de la table (nom_table1) y sont renvoyées, même s'il n'y a aucune ligne correspondante dans la table de droite (nom_table2). Il est recommandé d'utiliser l'association gauche lorsque vous travaillez sur des projets. Cependant, il existe de nombreuses relations entre tables. Une table est une jointure gauche à a, mais en même temps une jointure droite à b. Dans ce cas, l'ajout d'une jointure droite peut être plus pratique à écrire.
Appliquer les deux premières tables pour effectuer une requête de jointure à gauche :
SELECT goods.*,category.cate_name FROM goods LEFT JOIN category ON goods.id=category.goods_id ORDER BY goods.id
RIGHT JOIN
Le mot-clé RIGHT JOIN renverra toutes les lignes de la table de droite (table_name2), même s'il n'y a aucune ligne correspondante dans la table de gauche (table_name1 ) . Appliquez les deux premières tables pour effectuer une requête de corrélation correcte :
SELECT a.goods_name,a.price,b.* FROM goods as a RIGHT JOIN category as b ON a.id=b.goods_id ORDER BY b.id
Pour une corrélation multi-tables, c'est Ajoutez quelques déclarations connexes supplémentaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!