データベースに2つのテーブルがあります。1つは注文用、もう1つは会社用です。
Ordersの構造は次のとおりです。
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)
最初のクエリは機能するが、2番目のクエリは機能しないのはなぜですか?
最初のクエリは次を返します:
name
---------------
Company 1
Another Company
StackOverflow
2番目のクエリは次のもののみを返します。
name
---------------
Company 1
これはなぜですか、なぜ最初のクエリはすべての会社を返しますが、2番目のクエリは最初のクエリのみを返すのですか?