Table des matières
Préface
Instance
Maison base de données tutoriel mysql L'utilisation de base de mysql left join et la différence entre on etwhere

L'utilisation de base de mysql left join et la différence entre on etwhere

Jun 02, 2023 pm 11:54 PM
mysql where left join

Préface

Lorsque nous écrivons des instructions SQL, nous ne pouvons pas éviter d'utiliser des mots-clés de connexion, tels que des connexions internes et des connexions externes. Il en existe de nombreux types, je posterai ici une photo que j'ai trouvée ailleurs :

Lutilisation de base de mysql left join et la différence entre on etwhere

Je trouve que cette photo est très détaillée, elle montre Hors du commun types dans les instructions SQL, prenez la jointure gauche dans cet article comme exemple. Elle est définie en ligne comme ceci : Le mot-clé LEFT JOIN renverra toutes les lignes de la table de gauche, même s'il n'y a aucune ligne correspondante dans la table de droite.

En fait, en termes de sens littéral, left join est relativement facile à comprendre, mais dans le processus d'utilisation, il y aura encore quelques problèmes, comme l'état après et après où , leurs résultats sont complètement différents. Ensuite, nous découvrirons la jointure gauche de superficielle à profonde.

Instance

CREATE TABLE `class` (
  `class_id` int NOT NULL,
  `class_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `class_grade` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`class_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT;
Copier après la connexion

tableau de score :

CREATE TABLE `score` (
  `class_id` int NOT NULL,
  `stu_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `score` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=COMPACT;
Copier après la connexion

Ils ont chacun des données :

Lutilisation de base de mysql left join et la différence entre on etwhere#🎜🎜 #

Lutilisation de base de mysql left join et la différence entre on etwhere

Q1 : sélectionnez c.class_id,c.class_name,c.class_grade,s.stu_id,s.score de la classe c, rejoignez le score s sur c.class_id =s.class_id.

Cette phrase peut être réécrite comme suit : Nous avons analysé cette instruction. La table de gauche est la table des classes, la table de droite est la table des scores et leur champ associé est class_id. Lorsque le class_id dans la table de gauche est 1, il y a deux enregistrements dans la table de droite avec class_id 1 ; lorsque le class_id dans la table de gauche est 2, le class_id dans les deux enregistrements de la table de droite est 2 ; la table de gauche est 3, il y a un enregistrement dans la table de droite. Le class_id de l'enregistrement est 3, nous devrions donc obtenir cinq enregistrements :

1	语文	A	A002	82
1	语文	A	A001	91
2	数学	B	A002	87
2	数学	B	A001	95
3	英语	C	B003	65
Copier après la connexion

Q2 : sélectionnez c.class_id,c.class_name,c. class_grade,s.stu_id,s.score de la classe c ont rejoint le score s sur c.class_id=s.class_id et s.score=90.

Sur la base de l'exemple de la première question, celle-ci a une condition supplémentaire de s.score=90. Cela signifie que le champ de score du tableau de droite est de 90, mais quand on regarde les données du tableau. , on constate qu'il n'y a pas de score dans le tableau de droite 90, OK, le résultat sera-t-il vide ? Après tout, le tableau de droite ne contient pas de données répondant aux conditions.

En fait, si vous exécutez cette instruction SQL, vous finirez par obtenir le résultat, mais vous n'obtiendrez que trois données. Tous les champs du tableau de gauche sont affichés, et tous les champs du tableau de gauche. la table de droite correspond à Vide, car il n'y a aucun enregistrement dans la table de droite avec un score de 90, donc les champs de la table de droite sont vides.

on filtre d'abord les données, puis les connecte, tandis que Where filtre les données après avoir effectué une requête associée entre les deux tables. La différence entre on et Where est ici, et les exemples suivants sont également ces deux. des différences seront impliquées.

1	语文	A		
2	数学	B		
3	英语	C
Copier après la connexion
Copier après la connexion
Copier après la connexion

Q3 : sélectionnez c.class_id,c.class_name,c.class_grade,s.stu_id,s.score de la classe c, rejoignez le score s sur c.class_id=s.class_id où c.class_name =«chinois» et s.score=90.

Vous devez faire attention à la différence entre Where et On, car cette instruction implique le mot-clé Where. Le résultat de la requête de ce SQL est vide. En effet, les deux tables sont d'abord connectées pour interroger les résultats, puis filtrées. Le résultat de la requête de la table connectée est qu'il n'y a aucun enregistrement correspondant à class_name=‘中文’ , et score=90, donc le résultat de la requête est vide.

Q4 : sélectionnez c.class_id,c.class_name,c.class_grade,s.stu_id,s.score de la classe c, rejoignez le score s sur c.class_id=s.class_id et 1=0.

On ajoute parfois 1=1 après la condition Where de SQL, et 1=0 signifie ici que l'association entre les deux tables a échoué, le résultat n'affichera donc que les données de la table de gauche.

1	语文	A	null	null
2	数学	B	null	null
3	英语	C	null	null
Copier après la connexion
Copier après la connexion

Q5 : sélectionnez c.class_id,c.class_name,c.class_grade,s.stu_id,s.score de la classe c gauche rejoindre le score s sur 1=0.

Le résultat de l'exécution est le même que l'instruction SQL ci-dessus. En fait, tout le contenu de la table de gauche est affiché.

1	语文	A	null	null
2	数学	B	null	null
3	英语	C	null	null
Copier après la connexion
Copier après la connexion

Q6 : sélectionnez c.class_id,c.class_name,c.class_grade,s.stu_id,s.score de la classe c, rejoignez le score s sur c.class_id=s.class_id et c.class_name =«chinois».

Cela doit filtrer les enregistrements avec class_name comme langue dans la table de droite, il y en a deux, puis relier les deux enregistrements dans la table de gauche, il n'est donc pas difficile de voir qu'il y en a quatre résultats :

1	语文	A	A002	82
1	语文	A	A001	91
2	数学	B	null	null
3	英语	C	null	null
Copier après la connexion

Q7 : sélectionnez c.class_id,c.class_name,c.class_grade,s.stu_id,s.score de la classe c, rejoignez le score s sur c.class_id=s.class_id et c .class_name=‘Anglais’.

L'analyse est la même que la question précédente (le résultat dans la zone vide est nul) :

1	语文	A		
2	数学	B		
3	英语	C	B003	65
Copier après la connexion

Q8 : sélectionnez c.class_id,c.class_name,c.class_grade ,s.stu_id, s.score de la classe c ont rejoint le score s sur c.class_id=s.class_id et c.class_name=‘sports’.

Il n'y a pas de données dans le tableau de droite et le nom_classe est sports, donc le tableau de droite est vide et toutes les données du tableau de gauche sont affichées. Les champs correspondants dans le tableau de droite sont vides : #. 🎜🎜#
1	语文	A		
2	数学	B		
3	英语	C
Copier après la connexion
Copier après la connexion
Copier après la connexion

Q9 : sélectionnez c.class_id,c.class_name,c.class_grade,s.stu_id,s.score de la classe c, rejoignez le score s sur c.class_id=s.class_id et c.class_name= «中文’ et s.

右表中只有一条记录的score为91,所以需要拿左表与右表的这一条数据进行关联,左表只有语文可以与右表的那一条数据对上,所以结果为:

1	语文	A	A001	91
2	数学	B		
3	英语	C
Copier après la connexion

Q10:select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id and c.class_name=‘体育’ and s.score=90。

右表中没有数据的score为90,同样左表中也没有class_name为体育,但是这并不意味着最后的结果就是空了,只要没有where条件,最终的结果数量最起码也会是左表中原先的数据数量,所以这条sql会返回左表的全部数据。

1	语文	A		
2	数学	B		
3	英语	C
Copier après la connexion
Copier après la connexion
Copier après la connexion

Q11:select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id where c.class_name=‘英语’。

需要注意的点:条件是在where中的,也就是在表关联之后,再进行过滤的,所以最终的结果只会有一条:

3	英语	C	B003	65
Copier après la connexion

Q12:select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id where s.score=91。

和上面一样,是在连表查询之后,找出score=90的数据:

1	语文	A	A001	91
Copier après la connexion
Copier après la connexion

Q12;select c.class_id,c.class_name,c.class_grade,s.stu_id,s.score from class c left join score s on c.class_id=s.class_id where c.class_name=‘语文’ and s.score=91。

我们将两表连接查询后,找出结果中class_name为语文,score为91的记录,只有一条:

1	语文	A	A001	91
Copier après la connexion
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La relation entre l'utilisateur de MySQL et la base de données La relation entre l'utilisateur de MySQL et la base de données Apr 08, 2025 pm 07:15 PM

Dans la base de données MySQL, la relation entre l'utilisateur et la base de données est définie par les autorisations et les tables. L'utilisateur a un nom d'utilisateur et un mot de passe pour accéder à la base de données. Les autorisations sont accordées par la commande Grant, tandis que le tableau est créé par la commande Create Table. Pour établir une relation entre un utilisateur et une base de données, vous devez créer une base de données, créer un utilisateur, puis accorder des autorisations.

Intégration RDS MySQL avec Redshift Zero ETL Intégration RDS MySQL avec Redshift Zero ETL Apr 08, 2025 pm 07:06 PM

Simplification de l'intégration des données: AmazonrDSMysQL et l'intégration Zero ETL de Redshift, l'intégration des données est au cœur d'une organisation basée sur les données. Les processus traditionnels ETL (extrait, converti, charge) sont complexes et prennent du temps, en particulier lors de l'intégration de bases de données (telles que AmazonrDSMysQL) avec des entrepôts de données (tels que Redshift). Cependant, AWS fournit des solutions d'intégration ETL Zero qui ont complètement changé cette situation, fournissant une solution simplifiée et à temps proche pour la migration des données de RDSMySQL à Redshift. Cet article plongera dans l'intégration RDSMYSQL ZERO ETL avec Redshift, expliquant comment il fonctionne et les avantages qu'il apporte aux ingénieurs de données et aux développeurs.

MySQL: la facilité de gestion des données pour les débutants MySQL: la facilité de gestion des données pour les débutants Apr 09, 2025 am 12:07 AM

MySQL convient aux débutants car il est simple à installer, puissant et facile à gérer les données. 1. Installation et configuration simples, adaptées à une variété de systèmes d'exploitation. 2. Prise en charge des opérations de base telles que la création de bases de données et de tables, d'insertion, d'interrogation, de mise à jour et de suppression de données. 3. Fournir des fonctions avancées telles que les opérations de jointure et les sous-questionnaires. 4. Les performances peuvent être améliorées par l'indexation, l'optimisation des requêtes et le partitionnement de la table. 5. Prise en charge des mesures de sauvegarde, de récupération et de sécurité pour garantir la sécurité et la cohérence des données.

Comment remplir le nom d'utilisateur MySQL et le mot de passe Comment remplir le nom d'utilisateur MySQL et le mot de passe Apr 08, 2025 pm 07:09 PM

Pour remplir le nom d'utilisateur et le mot de passe MySQL: 1. Déterminez le nom d'utilisateur et le mot de passe; 2. Connectez-vous à la base de données; 3. Utilisez le nom d'utilisateur et le mot de passe pour exécuter des requêtes et des commandes.

L'optimisation des requêtes dans MySQL est essentielle pour améliorer les performances de la base de données, en particulier lorsqu'elle traite avec de grands ensembles de données L'optimisation des requêtes dans MySQL est essentielle pour améliorer les performances de la base de données, en particulier lorsqu'elle traite avec de grands ensembles de données Apr 08, 2025 pm 07:12 PM

1. Utilisez l'index correct pour accélérer la récupération des données en réduisant la quantité de données numérisées SELECT * FROMMLOYEESEESHWHERELAST_NAME = 'SMITH'; Si vous recherchez plusieurs fois une colonne d'une table, créez un index pour cette colonne. If you or your app needs data from multiple columns according to the criteria, create a composite index 2. Avoid select * only those required columns, if you select all unwanted columns, this will only consume more server memory and cause the server to slow down at high load or frequency times For example, your table contains columns such as created_at and updated_at and timestamps, and then avoid selecting * because they do not require inefficient query se

Puis-je récupérer le mot de passe de la base de données dans Navicat? Puis-je récupérer le mot de passe de la base de données dans Navicat? Apr 08, 2025 pm 09:51 PM

Navicat lui-même ne stocke pas le mot de passe de la base de données et ne peut récupérer que le mot de passe chiffré. Solution: 1. Vérifiez le gestionnaire de mots de passe; 2. Vérifiez la fonction "Remember Motway" de Navicat; 3. Réinitialisez le mot de passe de la base de données; 4. Contactez l'administrateur de la base de données.

Comprendre les propriétés acides: les piliers d'une base de données fiable Comprendre les propriétés acides: les piliers d'une base de données fiable Apr 08, 2025 pm 06:33 PM

Une explication détaillée des attributs d'acide de base de données Les attributs acides sont un ensemble de règles pour garantir la fiabilité et la cohérence des transactions de base de données. Ils définissent comment les systèmes de bases de données gérent les transactions et garantissent l'intégrité et la précision des données même en cas de plantages système, d'interruptions d'alimentation ou de plusieurs utilisateurs d'accès simultanément. Présentation de l'attribut acide Atomicité: une transaction est considérée comme une unité indivisible. Toute pièce échoue, la transaction entière est reculée et la base de données ne conserve aucune modification. Par exemple, si un transfert bancaire est déduit d'un compte mais pas augmenté à un autre, toute l'opération est révoquée. BeginTransaction; UpdateAccountSsetBalance = Balance-100Wh

Comment voir Mysql Comment voir Mysql Apr 08, 2025 pm 07:21 PM

Affichez la base de données MySQL avec la commande suivante: Connectez-vous au serveur: MySQL -U Username -P mot de passe Exécuter les bases de données Afficher les bases de données; Commande pour obtenir toutes les bases de données existantes Sélectionnez la base de données: utilisez le nom de la base de données; Tableau de vue: afficher des tables; Afficher la structure de la table: décrire le nom du tableau; Afficher les données: sélectionnez * dans le nom du tableau;

See all articles