mysql in est souvent utilisé dans les expressions Where. Sa fonction est d'interroger des données dans une certaine plage. Sa syntaxe d'utilisation est telle que "select * from which field in (value1, value2, value3,...)".
L'environnement d'exploitation de cet article : système Windows 7, mysql5.7, Dell G3.
mysql dans Qu'est-ce que cela signifie ?
Explication détaillée de l'utilisation de in dans MySQL
1. Utilisation de base
in dans MySQL est souvent utilisé dans les expressions Where, et sa fonction est d'interroger les données à l'intérieur une certaine gamme.
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 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. 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. opération Instructions supplémentaires
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 ne peut être utilisé pour un Les champs sont comparés dans une plage. 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 opérateurs tels que LIKE. , >=, =, etc. 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)
// L'équivalent est :
SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=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.
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!