Maison >base de données >SQL >Apprentissage d'introduction à SQL : une brève analyse de l'utilisation du mot-clé UNION
Dans notre processus de développement, nous utilisons souvent plusieurs résultats de requête pour les afficher directement. Alors, comment devrions-nous interroger ? Cet article concerne l'apprentissage de SQL. Jetons un coup d'œil au mot-clé UNION dans SQL et comment l'utiliser. J'espère qu'il sera utile à tout le monde !
Le mot-clé UNION dans SQL affichera les résultats de plusieurs conditions de requête.
UNION signifie union en chinois, c'est-à-dire fusionner les résultats de deux ou plusieurs instructions SELECT. Les conseils d'utilisation sont les suivants :
Comme indiqué ci-dessous, utilisez les données introduites dans le chapitre précédent comme données de démonstration
Créez des tableaux séparéments_user
和表s_user_1
CREATE TABLE `s_user` ( `userid` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(255) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `pass_word` varchar(255) DEFAULT NULL, `salt` varchar(255) DEFAULT NULL, `state` varchar(255) DEFAULT NULL, `create_time` datetime DEFAULT NULL, PRIMARY KEY (`userid`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
Les données de test sont les suivantes :
INSERT INTO `test`.`s_user`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (1, '小米', '小米', '123123', '123', '1', '2022-02-10 19:48:43'); INSERT INTO `test`.`s_user`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (2, '小白', '小白', '123123', '123', '1', '2022-02-10 19:48:43'); INSERT INTO `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (1, '小红', '小红', '123123', '123', '1', '2022-02-10 19:48:43'); INSERT INTO `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (2, '小黄', '小黄', '123123', '123', '1', '2022-02-10 19:48:43');
Chaque instruction SELECT à l'intérieur de UNION doit avoir le même nombre de colonnes : commencez par interroger SQL
SELECT * FROM `s_user` UNION SELECT * FROM `s_user_1`
avec les mêmes colonnes pour interroger toutes les colonnes. Vous pouvez voir que les résultats de l'exécution sont les suivants.
Si la première requête concerne toutes les colonnes et la deuxième requête concerne trois champs, quel est le résultat de la requête ? Exécutez maintenant le SQL suivant :
Utilisation incorrecte
SELECT * FROM `s_user` UNION SELECT userid,name,pass_word FROM `s_user_1`
Erreur message : L'instruction SELECT utilisée pour interroger différents nombres de colonnes
Utilisation correcte
SELECT userid,name,pass_word FROM `s_user` UNION SELECT userid,name,pass_word FROM `s_user_1`
Nous avons vu plus haut que le nombre de colonnes dans plusieurs requêtes doit être le même, alors le nombre de colonnes interrogé S'ils sont identiques mais que les types de données des champs de requête sont différents, peuvent-ils être traités normalement ? Ensuite, remplacez pass_word dans la requête s_user par create_time pour interroger. Vous pouvez le voir après avoir interrogé. Dans les requêtes SQL, le type de données de la colonne n'a pas d'importance. Bien entendu, dans la pratique, ils ne seront pas définis selon des types différents.
SELECT userid,name,create_time FROM `s_user` UNION SELECT pass_word,name,userid FROM `s_user_1`
Lorsque vous utilisez le mot-clé UNION pour interroger, est-ce lié à l'ordre des colonnes, comme vu ci-dessus, cela peut être lié à l'ordre des colonnes, ou cela peut ne pas être lié, alors testons-le. Vous pouvez voir que les résultats de l'exécution n'ont rien à voir avec l'ordre des colonnes. Dans la réalité, plusieurs requêtes sont fusionnées, l'ordre des colonnes que nous définissons dans le projet doit donc être cohérent.
SELECT create_time,userid,name FROM `s_user` UNION SELECT pass_word,name,userid FROM `s_user_1`
Afin de tester la différence entre UNION et UNION ALL, vous devez ajouter [Xiaobai] dans la table de données s_user_1 et [Xiaobai] dans la table s_user existent tous les deux dans la base de données, et les deux auront quel résultat différent.
INSERT INTO `test`.`s_user_1`(`userid`, `user_name`, `name`, `pass_word`, `salt`, `state`, `create_time`) VALUES (3, '小白', '小白', '123123', '123', '1', '2022-02-10 19:48:43');
Première exécution :
SELECT user_name,name,pass_word,salt FROM `s_user` UNION SELECT user_name,name,pass_word,salt FROM `s_user_1`
Résultat de l'exécution :
Exécuter à nouveau
SELECT user_name,name,pass_word,salt FROM `s_user` UNION ALL SELECT user_name,name,pass_word,salt FROM `s_user_1`
Résultat de l'exécution :
Vous pouvez voir que les éléments en double sont supprimés pour l'association UNION et La requête UNION ALL affiche Toutes les valeurs, aucun doublon supprimé.
D'accord, ce qui précède concerne l'utilisation du mot-clé UNION dans SQL. Merci d'avoir lu. J'espère que vous l'aimez. Si cela vous est utile, veuillez l'aimer et l'enregistrer. S'il y a des lacunes, veuillez les commenter et les corriger. A la prochaine fois.
Apprentissage recommandé : Tutoriel vidéo mysql
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!