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 );
这是正确的,但在临时表的情况下不起作用。