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)".
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 ?
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,…)
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,…)
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)
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
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 )
2. . Instructions supplémentaires pour l'opérateur IN
SELECT zd.* FROM ( SELECT DISTINCT zdcode FROM basic_h WHERE zdcode != "" ) AS h LEFT JOIN basic_zdjbxx zd ON zd.suiji = h.zdcode
. 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')
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
SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','manong')
// L'équivalent est :
SELECT * FROM user WHERE uid IN (2,3,5)
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 mysqlCe 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!