【发布时间】:2011-05-08 12:56:00
【问题描述】:
我的数据库中有 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
这是为什么,为什么第一个查询返回所有公司,而第二个查询只返回第一个?
【问题讨论】:
-
attachedCompanyIDs 是一个大字符串,所以 mysql 尝试在它的整数转换中找到公司
-
我认为这是最好的例子mysqltutorial.org/mysql-find_in_set
标签: mysql