FIND_IN_SET () против IN ()

У меня есть 2 таблицы в моей базе данных. Один для заказов, а другой для компаний.

Заказы имеют такую ​​структуру:

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

И компания имеет такую ​​структуру:

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

Чтобы получить названия компаний заказа, я могу сделать запрос следующим образом:

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

Этот запрос работает нормально, но следующий запрос - нет.

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

Почему первый запрос работает, а не второй?

Первый запрос возвращает:

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

Второй запрос только возвращает:

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

Почему это так, почему первый запрос возвращает все компании, а второй - только первый?

Ответы на вопрос(6)

Ваш ответ на вопрос