首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么find_in_set有效,但IN子句

为什么find_in_set有效,但IN子句
EN

Stack Overflow用户
提问于 2013-03-27 18:33:51
回答 2查看 1.8K关注 0票数 3

我有这样的代码。

代码语言:javascript
运行
复制
DELIMITER $$
    CREATE PROCEDURE `sp_deleteOrderData`(orderid BIGINT(11))
    BEGIN
        DECLARE shipmentnumbers VARCHAR(1000);
        DECLARE cartonid VARCHAR(1000);

        SELECT GROUP_CONCAT(a_shipmentid) FROM t_shipment WHERE a_orderid = orderid INTO shipmentnumbers;

        SELECT GROUP_CONCAT(a_cartonid) FROM t_carton WHERE a_shipmentid IN (shipmentnumbers) INTO cartonid;

    SELECT shipmentnumbers;
    /*SELECT  cartonid;  */
    END$$

    DELIMITER ;

在这里,shipmentnumbers返回100020,100021,100022理想情况下,cartonid应该作为11,12,13返回

但我只拿到了11个卡通。

但是当我使用下面的代码时,我得到了正确的结果。

代码语言:javascript
运行
复制
  SELECT GROUP_CONCAT(a_cartonid) FROM t_carton WHERE FIND_IN_SET( a_shipmentid, shipmentnumbers ) INTO cartonid;

我想知道IN和FIND_IN_SET之间的确切区别是什么,以及我决定使用什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-27 18:36:29

IN接受要搜索的列表或参数,FIND_IN_SET接受包含逗号分隔列表的字符串参数:

代码语言:javascript
运行
复制
SELECT  1 IN (1, 2, 3, 4)

SELECT  FIND_IN_SET(1, '1,2,3,4')

如果您尝试将IN应用于逗号分隔的字符串,它会将其视为单个参数,并将其作为一个整体进行匹配:

代码语言:javascript
运行
复制
SELECT  1 IN ('1,2,3,4')

当然,字符串'1'不等于字符串'1,2,3,4',所以上面的查询返回false。

票数 2
EN

Stack Overflow用户

发布于 2013-03-27 18:36:29

FIND_IN_SET在一组用逗号分隔的字符串中搜索字符串。

  • MySQL FIND_IN_SET

但是您不需要使用GROUP_CONCAT来连接要在IN子句中使用的行,试试这个,

代码语言:javascript
运行
复制
SELECT  GROUP_CONCAT(a_cartonid) 
FROM    t_carton
WHERE   a_shipmentid IN
         (
            SELECT a_shipmentid
            FROM t_shipment 
            WHERE a_orderid = orderid
         )

或者使用JOIN

代码语言:javascript
运行
复制
SELECT  GROUP_CONCAT(DISTINCT a.a_cartonid) 
FROM    t_carton a
        INNER JOIN
        (
            SELECT a_shipmentid
            FROM t_shipment 
            WHERE a_orderid = orderid
        ) b ON a.a_shipmentid = b.a_shipmentid
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15656740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档