मेरे डेटाबेस में 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
ऐसा क्यों है, पहली क्वेरी सभी कंपनियों को क्यों लौटाती है, लेकिन दूसरी क्वेरी पहले वाली को ही लौटाती है?