Maison  >  Article  >  base de données  >  Comment interroger différentes valeurs de données du même champ dans deux tables

Comment interroger différentes valeurs de données du même champ dans deux tables

怪我咯
怪我咯original
2017-06-23 13:34:129832parcourir

Comment interroger différentes valeurs de données du même champ dans deux tables

Par exemple :

Le champ a dans la table A contient 40 000 éléments de données
Le champ a dans la table B a 60 000 40 000 éléments de données sont identiques au tableau A
Comment pouvons-nous interroger les 20 000 éléments de données différents ?

--Créer des tableaux table1, table2 :

create   table   table1(id   int,name   varchar(10));   
create   table   table2(id   int,score   int);   
insert   into   table1   select   '1','lee';
insert   into   table1   select   '2','zhang';
insert   into   table1   select   '3','steve';
insert   into   table1   select   '4','wang';   
insert   into   table2   select   '1','90';   
insert   into   table2   select   '2','100';   
insert   into   table2   select   '3','70';

comme indiqué dans le tableau

-------- -- ---------------------------------------
tableau1"
- --- ---------------------------------------------
nom d'identification
1 lee
2 zhang

3 steve
4 wang

------------------ --- ------------------

tableau2

------ --- ----------------------------------------------------

score d'identification
1 90
2 100

3 70

---------------------------- -- ---------------------

(1) L'ensemble de résultats de la jointure externe gauche inclut la jointure externe gauche clause spécifiée dans Toutes les lignes de la table de gauche, pas seulement les lignes correspondant à la colonne de jointure. Si une ligne du tableau de gauche n'a aucune ligne correspondante dans le tableau de droite, toutes les colonnes de la liste de sélection du tableau de droite seront nulles dans la ligne de l'ensemble de résultats associée.

(2)instruction SQL

select * from table1 t1 left join table2 t2 on t1.id = t2.id


3 steve 3 70---------- - -Résultat-------------
id nom id score
----------------------------- - ----- 
1 lee 1 90 
2 zhang 2 100 

4 wang null null 
---------------- -- -----------

Remarque : contient toutes les clauses de la table1, renvoie les champs correspondants de la table2 selon les conditions spécifiées et affiche null comme null

( 3 ) Ensuite obtenez la différence

1
select from table1 t1 left join table2 t2 on t1.id = t2.id WHERE t2.id is null

-------------Résultat------------- 
id nom id score 

4 wang null null 
-------------------------------- 

Voici la situation réelle rencontrée au travail :

## Filtrez 0 vendeur (c'est-à-dire une liste d'informations sur les employés sans enregistrements de ventes).

# Vendeur (table intermédiaire de rôle utilisateur)

1
select userid from bbscs_role_user where roleid = 'sales'

# ---> 11 enregistrements

# Tableau statistique (tableau des enregistrements de ventes des utilisateurs)

1
select refid from bbscs_sales_income_stat where type = 4 and month '2012-02' and amount != 0

# ---> 4 enregistrements

les exigences sont les suivantes : les enregistrements des 7 autres vendeurs sont répertoriés à cet effet.

##########Ceci est le modèle d'instruction SQL BEGIN##########

1
select from b t2 left join a t1 on t1.a1 = t2.b1 WHERE t1.a1 is null

#########Ceci est le modèle d'instruction SQL END############

Explication : La table de gauche est la table avec plus de données ( le tableau de référence est tel que le tableau b). requête de jointure gauche. La condition Where est qu'un champ (a1) de la table de droite (une table) est nul comme (champ de jugement)

##Requête du résultat de retour SQL en tant que table temporaire

1
2
3
select from (select userid from bbscs_role_user where roleid = 'sales') t2 left 
join (select refid from bbscs_sales_income_stat where type = 4 and month '2012-02' 
and amount != 0) t1 on t2.userid = t1.refid WHERE t1.refid is null

# --->7 enregistrements

Test 1 :

##Instruction SQL, Mysql interroge différentes valeurs (principalement des différences) dans deux tables. Il y a toujours un problème avec cette requête d'instruction.

1
2
select t1.Userid from bbscs_role_user t1 left join bbscs_sales_income_stat t2 on t1.userid = t2.refid 
and t1.roleid = 'sales' and t2.type = 4 and t2.month '2012-02' and t2.amount != 0 where t2.id is null;

##Les tableaux et tableaux, les conditions et les conditions sont indépendants.

# --->18 enregistrements

Test 2 :

1
2
select t1.Userid from bbscs_role_user t1 left join bbscs_sales_income_stat t2 on t1.userid = t2.refid 
and t1.roleid = 'sales' and t2.type = 4 and t2.month '2012-02' and t2.amount != 0 and t2.id is null

##où ou et La différence

# --->22 enregistrements

###Temporaire plus puissant La table La fonction de requête place les résultats de la requête ci-dessus dans leur ensemble.

## est associé à la table intermédiaire des départements utilisateurs et est affiché trié par identifiant de département.

1
2
3
select t4.userid fromselect from (select userid from bbscs_role_user where roleid = 'sales') t2 left join 
(select refid from bbscs_sales_income_stat where type = 4 and month '2012-02' and amount != 0) t1 on 
t2.userid = t1.refid WHERE t1.refid is null ) t3, bbscs_org_user t4 where t3.userid = t4.userid order by orgId


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:
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