Tôi có 2 bảng trong cơ sở dữ liệu của mình. Một là cho đơn đặt hàng, và một là cho các công ty.
Đơn đặt hàng có cấu trúc này:
OrderID | attachedCompanyIDs
------------------------------------
1 1,2,3
2 2,4
Và Công ty có cấu trúc này:
CompanyID | name
--------------------------------------
1 Company 1
2 Another Company
3 StackOverflow
4 Nothing
Để có được tên công ty của một đơn đặt hàng, tôi có thể thực hiện một truy vấn như sau:
SELECT name FROM orders,company
WHERE orderID = 1 AND FIND_IN_SET(companyID, attachedCompanyIDs)
Truy vấn đó hoạt động tốt, nhưng truy vấn sau thì không.
SELECT name FROM orders,company
WHERE orderID = 1 AND companyID IN (attachedCompanyIDs)
Tại sao truy vấn đầu tiên hoạt động mà không phải là truy vấn thứ hai?
Truy vấn đầu tiên trả về:
name
---------------
Company 1
Another Company
StackOverflow
Truy vấn thứ hai chỉ trả về:
name
---------------
Company 1
Tại sao lại như vậy, tại sao truy vấn đầu tiên trả về tất cả các công ty, nhưng truy vấn thứ hai chỉ trả về truy vấn đầu tiên?