【问题标题】:MySQL: creating comma separated list and using in INMySQL:创建逗号分隔列表并在 IN 中使用
【发布时间】:2015-02-26 09:58:35
【问题描述】:

我的功能代码如下。

DECLARE ids VARCHAR(55);
SELECT  GROUP_CONCAT(id) INTO ids 
        FROM tableName WHERE ...;
SELECT CONCAT(GROUP_CONCAT(id), ids ) INTO ids FROM tableName .....;
SELECT column_name FROM tableName WHERE id IN (**ids**);

在此我使用两个 select 语句创建 id 列表并应用到 IN 列表中。它给了我空结果。如果我 CAST 像 CONCAT(GROUP_CONCAT(id), CAST(ids as char) ) 这样的 ID,那么它会给我第一行结果。

【问题讨论】:

    标签: mysql sql select group-concat find-in-set


    【解决方案1】:

    试试这个:

    DECLARE ids VARCHAR(55);
    SELECT GROUP_CONCAT(id) INTO ids 
    FROM (SELECT id 
          FROM tableName 
          WHERE...
          UNION 
          SELECT id 
          FROM tableName
          WHERE....
    ) AS A;
    
    SELECT column_name FROM tableName WHERE FIND_IN_SET(id, ids);
    

    【讨论】:

    • 这是对的,但它不适用于临时表的情况。
    【解决方案2】:

    我已经通过以下代码解决了问题

    DECLARE ids VARCHAR(55);
    SELECT GROUP_CONCAT(id SEPARATOR ',') INTO ids  FROM tableName WHERE ...;
    SELECT CONCAT_WS(',', CAST(GROUP_CONCAT(id SEPARATOR ',')AS CHAR), CAST(ids AS CHAR)) INTO ids FROM tableName .....;
    SELECT column_name FROM tableName WHERE FIND_IN_SET (id, ids );
    

    【讨论】:

      猜你喜欢
      • 2013-07-03
      • 1970-01-01
      • 1970-01-01
      • 2023-02-03
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 2011-05-13
      相关资源
      最近更新 更多