Maison > base de données > tutoriel mysql > Quelle est l'utilité de in dans MySQL

Quelle est l'utilité de in dans MySQL

WBOY
Libérer: 2021-12-21 17:35:14
original
16853 Les gens l'ont consulté

Dans MySQL, in est utilisé avec l'expression Where pour interroger des données dans une certaine plage. La syntaxe est "sélectionner * à partir d'où le champ est dans (valeur)" ou "sélectionner * à partir d'où le champ n'est pas dans (valeur)".

Quelle est l'utilité de in dans MySQL

L'environnement d'exploitation de ce tutoriel : système windows10, version mysql8.0.22, ordinateur Dell G3.

Quelle est l'utilisation de in dans MySQL ?

1. Utilisation de base

in dans MySQL est souvent utilisée dans les expressions Where, et sa fonction est d'interroger des données dans une certaine plage.

select * from where field in (value1,value2,value3,…)
Copier après la connexion

Lorsque IN est précédé de l'opérateur NOT, cela signifie le sens opposé à IN, c'est-à-dire ne pas sélectionner dans ces éléments de liste

select * from where field not in (value1,value2,value3,…)
Copier après la connexion

2. Sous-requête IN

Dans la plupart des cas, la valeur de l'élément de liste IN est unclear , qui peut être obtenu via une sous-requête :

SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)
Copier après la connexion

Dans cet exemple SQL, nous avons implémenté la méthode permettant de rechercher tous les articles de tous les utilisateurs dont le statut est 0 (éventuellement banni). Tout d'abord, obtenez tous les utilisateurs avec le statut = 0 via une requête :

SELECT uid FROM user WHERE status=0
Copier après la connexion

Utilisez ensuite les résultats de la requête comme éléments de liste de IN pour obtenir les résultats finaux de la requête. Notez que le résultat renvoyé dans la sous-requête doit être un élément de liste de champs.

Nous rencontrons souvent le problème de la faible efficacité des requêtes dans la sous-requête in. La solution est la suivante :

1 Utilisez toujours la sous-requête in et interrogez une fois de plus

SELECT * FROM basic_zdjbxx WHERE suiji IN ( SELECT zdcode FROM ( SELECT zdcode FROM basic_h WHERE zdcode != "" ) AS h )
Copier après la connexion

2. . Instructions supplémentaires pour l'opérateur IN

Les éléments de la liste IN prennent en charge non seulement les nombres, mais également les caractères et même les types d'heure et de date, et ces différents types d'éléments de données peuvent être mélangés et organisés sans être cohérents avec le type de colonne :

SELECT zd.* FROM ( SELECT DISTINCT zdcode FROM basic_h WHERE zdcode != "" ) AS h LEFT JOIN basic_zdjbxx zd ON zd.suiji = h.zdcode
Copier après la connexion

. Un IN peut uniquement Pour effectuer une comparaison de plage sur un champ, si vous souhaitez spécifier plus de champs, vous pouvez utiliser les opérateurs logiques AND ou OR :

SELECT * FROM user WHERE uid IN(1,2,'3','c')
Copier après la connexion

Après avoir utilisé les opérateurs logiques AND ou OR, IN peut également être combiné avec d'autres tels que LIKE, >=, =, etc., les opérateurs sont utilisés ensemble.

4. Concernant l'efficacité de l'opérateur IN

Si les éléments de la liste IN sont certains, alors plusieurs OR peuvent être utilisés à la place :

  SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','manong')
Copier après la connexion

// L'équivalent est :

SELECT * FROM user WHERE uid IN (2,3,5)
Copier après la connexion

On pense généralement que :

1. Si vous travaillez sur des champs d'index, l'utilisation de OR est plus efficace que IN, mais lorsque les éléments de la liste sont incertains (par exemple, des sous-requêtes sont nécessaires pour obtenir des résultats), vous devez utiliser l'opérateur IN. De plus, lorsque les données de la table de sous-requête sont plus petites que la requête principale, l'opérateur IN est également applicable.

2. Lorsque in ou or n'ajoute pas d'index au champ, plus il y a de champs connectés (1 ou 2 ou 3 ou 4 ou...), l'efficacité de la requête de or est bien inférieure à celle de in.

【Recommandation associée :

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal