Maison base de données tutoriel mysql sql join,outer-join,semi-join,anti-join的区别

sql join,outer-join,semi-join,anti-join的区别

Jun 07, 2016 pm 05:49 PM
from join loop select

本文章来分析介绍关于mssql sql中的sql join,outer-join,semi-join,anti-join的区别 ,有需要的同学可以参考一下下哈。

表连接的方式如join,semi-join,outer-join,anti-join;
表连接的实现方式如nested loop,merge,hash.
本文简单的介绍表连接的方式join,semi-join,outer-join,anti-join和适用情景。

假设2个数据源(row source).
Emp(id pk,ename,deptno) Dept(deptno pk,dname)

如下是join
ename,dname from emp,dept where emp.deptno=dname.deptno;
2个数据源键值一一比较,返回相互匹配的记录集

 代码如下 复制代码

for example: nested loop join
for x in ( select * from emp )
loop
for y in ( select * from dept)
loop
if ( x.deptno == y.deptno )
OutPut_Record(x.ename,y.dname)
End if
end loop
end loop

outer-join
select ename,dname from emp,dept where emp.deptno= dept.deptno(+);
select ename,dname from emp,dept where emp.deptno(+)=dept.deptno;


2个数据源键值一一比较,返回相互匹配的;但如果在另外一个row source没有找到匹配的也返回记录

 代码如下 复制代码
for example: nested loop outer-join
for x in ( select * from emp )
loop
find_flag=false;
for y in ( select * from dept)
loop
if ( x.deptno == y.deptno )
OutPut_Record(x.ename,y.dname)
Find_flag=true
End if
end loop
if ( find_flag == false )
OutPut_Record(x.ename,null)
End if
end loop
semi-join
select dname from dept where exists( select null from emp where emp.deptno=dept.deptno)

多在子查询exists中使用,对外部row source的每个键值,查找到内部row source匹配的第一个键值后就返回,如果找到就不用再查找内部row source其他的键值了。
for example: nested loop semi-join

 

 代码如下 复制代码

for x in ( select * from dept )
loop
for y in ( select * from emp)
loop
if ( x.deptno == y.deptno )
OutPut_Record(x.dname)
Break;
End if
end loop
end loop

anti-join
select ename,deptno from emp,dept where emp.deptno!=dept.deptno

多用于!= not in 等查询;如果找到满足条件(!= not in)的不返回,不满足条件(!= not in)的返回。和join相反。
 for example: nested loop anti-join

 代码如下 复制代码
for x in ( select * from emp )
loop
for y in ( select * from dept)
loop
if ( x.deptno != y.deptno )
OutPut_Record(x.dname,y.deptno)
End if
end loop
end loop
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)

Comment utiliser JOIN dans MySql Comment utiliser JOIN dans MySql Jun 04, 2023 am 08:02 AM

La signification de JOIN est similaire au mot anglais "join". Il joint deux tables et peut être grossièrement divisé en jointure interne, jointure externe, jointure droite, jointure gauche et jointure naturelle. Créez d'abord deux tables, ce qui suit est utilisé comme exemple CREATETABLEt_blog(idINTPRIMARYKEYAUTO_INCREMENT,titleVARCHAR(50),typeIdINT);SELECT*FROMt_blog;+----+------+--------+ | identifiant|titre|typeId|+----+-------+--------+|1|aaa|1||2|bbb|2||3|ccc|3 |

Méthode de traitement asynchrone de la programmation simultanée Select Channels Go à l'aide de Golang Méthode de traitement asynchrone de la programmation simultanée Select Channels Go à l'aide de Golang Sep 28, 2023 pm 05:27 PM

Méthode de traitement asynchrone de la programmation simultanée SelectChannelsGo à l'aide de golang Introduction : La programmation simultanée est un domaine important dans le développement de logiciels modernes, qui peut améliorer efficacement les performances et la réactivité des applications. Dans le langage Go, la programmation simultanée peut être implémentée de manière simple et efficace à l'aide des instructions Channels et Select. Cet article explique comment utiliser Golang pour les méthodes de traitement asynchrone de la programmation simultanée SelectChannelsGo et fournit des informations spécifiques.

Comment masquer l'élément select dans jquery Comment masquer l'élément select dans jquery Aug 15, 2023 pm 01:56 PM

Comment masquer l'élément select dans jquery : 1. méthode hide(), introduisez la bibliothèque jQuery dans la page HTML, vous pouvez utiliser différents sélecteurs pour masquer l'élément select, le sélecteur ID remplace le selectId par l'ID de l'élément select que vous utilisez réellement ; 2. la méthode css(), utilisez le sélecteur d'ID pour sélectionner l'élément de sélection qui doit être masqué, utilisez la méthode css() pour définir l'attribut d'affichage sur aucun et remplacez selectId par l'ID de l'élément de sélection.

Quel est le principe d'utilisation de MySQL Join ? Quel est le principe d'utilisation de MySQL Join ? May 26, 2023 am 10:07 AM

Le type de jointure leftjoin utilise la table de gauche comme table de pilotage et la table de gauche comme base de l'ensemble de résultats. Les données de la table de droite sont connectées à l'ensemble de résultats. rightjoin utilise la table de droite comme table de pilotage et la table de droite comme. la base de l'ensemble de résultats pour connecter la table de gauche. Les données sont ajoutées à l'ensemble de résultats innerjoin. L'ensemble de résultats prend l'intersection des deux tables. L'ensemble de résultats prend l'union des deux tables MySQL. fulljoin. La différence entre union et unionall est que l'union dédupliquera le produit cartésien de jointure croisée. Si la condition Where n'est pas utilisée, l'ensemble de résultats sera le produit des deux lignes de table associées. défini, il sera transmis conformément à la condition.

Comment implémenter la liaison d'événement de changement d'éléments sélectionnés dans jQuery Comment implémenter la liaison d'événement de changement d'éléments sélectionnés dans jQuery Feb 23, 2024 pm 01:12 PM

jQuery est une bibliothèque JavaScript populaire qui peut être utilisée pour simplifier la manipulation du DOM, la gestion des événements, les effets d'animation, etc. Dans le développement Web, nous rencontrons souvent des situations dans lesquelles nous devons modifier la liaison d'événements sur des éléments sélectionnés. Cet article explique comment utiliser jQuery pour lier des événements de modification d'éléments sélectionnés et fournit des exemples de code spécifiques. Tout d'abord, nous devons créer un menu déroulant avec des options utilisant des étiquettes :

Quelle est la raison pour laquelle Linux utilise select ? Quelle est la raison pour laquelle Linux utilise select ? May 19, 2023 pm 03:07 PM

Étant donné que select permet aux développeurs d'attendre plusieurs tampons de fichiers en même temps, cela peut réduire le temps d'attente des E/S et améliorer l'efficacité des E/S du processus. La fonction select() est une fonction de multiplexage IO qui permet au programme de surveiller plusieurs descripteurs de fichiers et d'attendre qu'un ou plusieurs des descripteurs de fichiers surveillés deviennent « prêts » ; l'état dit « prêt » fait référence à : le fichier ; Le descripteur n'est plus bloqué et peut être utilisé pour certains types d'opérations d'E/S, y compris les opérations en lecture, en écriture et les exceptions. select est une fonction informatique située dans le fichier d'en-tête #include. Cette fonction est utilisée pour surveiller les modifications des descripteurs de fichiers - lecture, écriture ou exceptions. 1. Introduction à la fonction de sélection La fonction de sélection est une fonction de multiplexage IO.

Que sont la requête de jointure de MySQL et les méthodes de requête multiples ? Que sont la requête de jointure de MySQL et les méthodes de requête multiples ? Jun 02, 2023 pm 04:29 PM

Par rapport à la requête de jointure et aux requêtes multiples, laquelle est la plus efficace, la requête MySQL multi-table ou la requête multiple à table unique ? Lorsque la quantité de données n'est pas suffisamment importante, l'utilisation de la jointure ne pose aucun problème, mais elle se fait généralement au niveau de la couche de service. Premièrement : les ressources informatiques d'une base de données autonome sont très coûteuses et la base de données doit servir à la fois à l'écriture. et lire en même temps, ce qui nécessite une consommation de processeur. Afin de rendre la base de données, le débit devient plus élevé et l'entreprise ne se soucie pas de l'écart de retard de centaines de microsecondes à millisecondes. L'entreprise mettra plus de calculs dans la couche de service. Après tout, les ressources informatiques peuvent être facilement étendues horizontalement et les bases de données sont difficiles, donc la plupart des entreprises placeront des opérations informatiques pures dans la couche de service et utiliseront la base de données comme un système kv avec des capacités de transaction.

Comment utiliser JOIN dans MySQL Comment utiliser JOIN dans MySQL Jun 03, 2023 am 09:30 AM

Introduction A's unique + AB's public B's unique + AB's public AB's public A's unique B's unique A's unique + B's unique + AB's public A's unique + B's unique Entraînement à créer des tables de départements DROPTABLEIFEXISTS`dept`;CREATETABLE`dept`(`dept_id`int( 11)NOTNULLAUTO_INCREMENT,`nom_dept`varchar(30)DEFAULTNULL,`numéro_dept`int(11)DEFAULTNULL,PRIMARYKEY(`id_dept`))ENGINE =InnoDBAUT

See all articles