Maison > base de données > tutoriel mysql > le corps du texte

Comment utiliser dans une requête dans MySQL

WBOY
Libérer: 2022-01-12 10:02:06
original
13115 Les gens l'ont consulté

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,…)
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 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)
Copier après la connexion

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
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. 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
Copier après la connexion

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')
Copier après la connexion

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')
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 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)
Copier après la connexion

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!

É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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!