Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:创建逗号分隔列表并在中使用_Mysql_Sql_Select_Group Concat_Find In Set - Fatal编程技术网

MySQL:创建逗号分隔列表并在中使用

MySQL:创建逗号分隔列表并在中使用,mysql,sql,select,group-concat,find-in-set,Mysql,Sql,Select,Group Concat,Find In Set,我的函数代码如下所示 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语句

我的函数代码如下所示

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列表中。它给我零结果。如果我像CONCAT(GROUP_CONCAT(id),CAST(ids as char))一样强制转换id,那么它会给我第一行结果

试试这个:

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);

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

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 );

这是正确的,但在临时表的情况下不起作用。