相关疑难解决方法(0)

FIND_IN_SET()vs IN()

我的数据库中有2个表.一个是订单,一个是公司.

订单具有以下结构:

OrderID     |     attachedCompanyIDs
------------------------------------
   1                     1,2,3
   2                     2,4
Run Code Online (Sandbox Code Playgroud)

公司有这样的结构:

CompanyID      |        name
--------------------------------------
    1                 Company 1
    2                 Another Company
    3                 StackOverflow
    4                 Nothing
Run Code Online (Sandbox Code Playgroud)

要获得订单的公司名称,我可以这样查询:

SELECT name FROM orders,company
WHERE orderID = 1 AND FIND_IN_SET(companyID, attachedCompanyIDs)
Run Code Online (Sandbox Code Playgroud)

该查询工作正常,但以下查询没有.

SELECT name FROM orders,company
WHERE orderID = 1 AND companyID IN (attachedCompanyIDs)
Run Code Online (Sandbox Code Playgroud)

为什么第一个查询有效但第二个查询无效?

第一个查询返回:

name
---------------
Company 1
Another Company
StackOverflow
Run Code Online (Sandbox Code Playgroud)

第二个查询只返回:

name
---------------
Company 1
Run Code Online (Sandbox Code Playgroud)

为什么这样,为什么第一个查询返回所有公司,但第二个查询只返回第一个查询?

mysql

121
推荐指数
3
解决办法
21万
查看次数

标签 统计

mysql ×1