FIND_IN_SET() vs IN() : Comprendre la différence dans MySQL
Question :
Dans MySQL, nous avons deux tables : « commandes » et « entreprise ». La colonne "attachedCompanyIDs" dans "orders" stocke une liste d'ID séparés par des virgules faisant référence aux lignes de "company". Lors d'une requête sur les noms de sociétés associés à une commande à l'aide de FIND_IN_SET(), nous obtenons les résultats attendus. Cependant, l’utilisation de IN() renvoie uniquement la première société correspondante. Pourquoi cela se produit-il ?
Réponse :
La colonne attachmentCompanyIDs est une valeur scalaire de type VARCHAR. Lors de l'utilisation de IN(), MySQL convertit la chaîne en un entier, en la tronquant au premier caractère non numérique (c'est-à-dire une virgule). Cela signifie que si attachmentCompanyIDs contient plusieurs valeurs, seule la première sera prise en compte pour la comparaison IN.
解决方法:
En fonction de votre scénario spécifique, il existe plusieurs solutions de contournement pour ce problème :
Considérations supplémentaires :
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!