FIND_IN_SET() vs EN()

J'ai 2 tables dans ma base de données. L'un est pour les commandes, et un pour les entreprises.

Commandes a cette structure:

OrderID     |     attachedCompanyIDs
------------------------------------
   1                     1,2,3
   2                     2,4

Et de l'Entreprise a cette structure:

CompanyID      |        name
--------------------------------------
    1                 Company 1
    2                 Another Company
    3                 StackOverflow
    4                 Nothing

Pour obtenir une ordonnance les entreprises des noms, je peux faire une requête en tant que tel:

SELECT name FROM orders,company
WHERE orderID = 1 AND FIND_IN_SET(companyID, attachedCompanyIDs)

Que la requête fonctionne très bien, mais la requête suivante ne fonctionne pas.

SELECT name FROM orders,company
WHERE orderID = 1 AND companyID IN (attachedCompanyIDs)

Pourquoi la première requête travail, mais pas la seconde?

La première requête retourne:

name
---------------
Company 1
Another Company
StackOverflow

La deuxième requête ne retourne:

name
---------------
Company 1

Pourquoi est-ce, pourquoi la première requête en retour toutes les entreprises, mais la deuxième requête ne retourne que le premier?

  • attachedCompanyIDs est une grande chaîne, de sorte que mysql essayer de trouver de l'entreprise dans ce son cast en entier
  • Je pense que c'est le meilleur exemple mysqltutorial.org/mysql-find_in_set