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
Почему это так, почему первый запрос возвращает все компании, а второй - только первый?