Maison  >  Article  >  base de données  >  Comment utiliser dans une requête dans MySQL

Comment utiliser dans une requête dans MySQL

WBOY
WBOYoriginal
2022-01-12 10:02:0613083parcourir

Dans MySQL, in est souvent utilisé dans les expressions Where pour interroger des données dans une certaine plage. La syntaxe est "select*from which field in(value1,value2,..)". , cela signifie que contrairement à in, aucune sélection n'est effectuée au sein de ces éléments de liste.

Comment utiliser dans une requête dans MySQL

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

Comment utiliser une requête dans MySQL

1. Utilisation de base

Dans MySQL, in est souvent utilisé 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,…)

2 Sous-requête IN

Dans la plupart des cas, la valeur de la liste IN. item is Ce n'est pas clair, mais 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 implémentons la méthode de recherche de tous les articles de tous les utilisateurs avec un statut de 0 (éventuellement bannis). 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. Utilisez LEFT JOIN

SELECT zd.* FROM ( SELECT DISTINCT zdcode FROM basic_h WHERE zdcode != "" ) AS h LEFT JOIN basic_zdjbxx zd ON zd.suiji = h.zdcode

3. IN Instructions supplémentaires pour les opérateurs

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 * FROM user WHERE uid IN(1,2,'3','c')

One 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) OR username IN('admin','manong')

Après avoir utilisé les opérateurs logiques AND ou OR, IN peut également être combiné avec d'autres tels comme les opérateurs LIKE, >=, =, etc. 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 (2,3,5)
// 等效为:
SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)

Croyance générale :

1 Si le champ d'index est exploité , en utilisant. OR est plus efficace que IN, mais lorsque les éléments de la liste sont incertains (par exemple, des résultats de sous-requête sont nécessaires), l'opérateur IN doit être utilisé. 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.

Dans ou ou lorsque le champ n'est pas indexé, plus il y a de champs connectés (1 ou 2 ou 3 ou 4 ou...), l'efficacité des requêtes de ou est bien inférieure à celle de in

Apprentissage recommandé : mysql tutoriel vidéo

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