FIND_IN_SET() 与 IN():了解 MySQL 中的差异
问题:
在 MySQL 中,我们有两个表:“orders”和“company”。 “orders”中的“attachedCompanyIDs”列存储引用“company”中行的逗号分隔的 ID 列表。当使用 FIND_IN_SET() 查询与订单关联的公司名称时,我们得到了预期的结果。但是,使用 IN() 仅返回第一个匹配的公司。为什么会发生这种情况?
答案:
attachedCompanyIDs 列是 VARCHAR 类型的标量值。当使用 IN() 时,MySQL 将字符串转换为整数,并在第一个非数字字符(即逗号)处截断它。这意味着如果attachedCompanyIDs包含多个值,则只会考虑第一个进行IN比较。
解决方法:
根据您的具体场景,有此问题的几种解决方法:
其他注意事项:
以上是MySQL FIND_IN_SET() 与 IN():为什么 IN() 只返回第一个以逗号分隔的 ID 匹配项?的详细内容。更多信息请关注PHP中文网其他相关文章!