exemple – noms de champs différents
Il n’est pas nécessaire que les colonnes correspondantes dans chaque instruction SELECT aient le même nom, mais elles doivent être les mêmes types de données correspondants.
lorsque vous n’avez pas les mêmes noms de colonne entre les instructions SELECT, cela devient un peu délicat, en particulier lorsque vous souhaitez ordonner les résultats de la requête à l’aide de la clause ORDER BY.
voyons comment utiliser L’opérateur UNION ALL avec des noms de colonnes différents et ordonner les résultats de la requête.,
Par exemple:
SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNION ALLSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;
dans cet exemple SQL UNION ALL, puisque les noms de colonnes sont différents entre les deux instructions SELECT, il est plus avantageux de référencer les colonnes de la clause ORDER BY par leur position dans le jeu de résultats. Dans cet exemple, nous avons trié les résultats par supplier_id / company_id dans l’ordre croissant, comme indiqué par le ORDER BY 1
. Les champs supplier_id / company_id sont en position # 1 dans le jeu de résultats.
maintenant, explorons cet exemple plus loin avec des données.,résultats:
supplier_id | supplier_name |
---|
tout d’abord, notez que l’enregistrement avec supplier_id de 3000 apparaît deux fois dans le jeu de résultats car la requête union all renvoie toutes les lignes et ne supprime pas les doublons.,
deuxièmement, notez que les en-têtes de colonne dans le jeu de résultats sont appelés supplier_id et supplier_name. En effet, ce sont les noms de colonne utilisés dans la première instruction SELECT dans L’UNION ALL.
Si vous aviez voulu, vous auriez pu alias de colonnes comme suit:
SELECT supplier_id AS ID_Value, supplier_name AS Name_ValueFROM suppliersWHERE supplier_id > 2000UNION ALLSELECT company_id AS ID_Value, company_name AS Name_ValueFROM companiesWHERE company_id > 1000ORDER BY 1;
Maintenant, les en-têtes de colonne dans le résultat sera alias ID_Value pour la première colonne et Valeur_nom pour la deuxième colonne.,
ID_Value | Name_Value |
---|---|
3000 | Apple |
3000 | Apple |
4000 | Samsung |
7000 | Sony |
8000 | IBM |
Leave a Reply