简体   繁体   English

在JOIN查询中使用Mysql GROUP_CONCAT

[英]Using Mysql GROUP_CONCAT in JOIN Query

I have a string resulting like this : 我有一个这样的字符串:

'41,42,43,44,45,46,'

from this query : 从此查询:

SELECT 
    GROUP_CONCAT(lv
        SEPARATOR ',') as Id
FROM
    (SELECT 
        @pv:=(SELECT 
                    GROUP_CONCAT(Id
                            SEPARATOR ',')
                FROM
                    iot_zone
                WHERE
                    FIND_IN_SET(id_zone, @pv)) AS lv
    FROM
        iot_zone
    JOIN (SELECT @pv:=40) tmp) a;

I need to join this result to a query like : 我需要将此结果加入一个查询,如:

SELECT T.* FROM T, T2
WHERE T.Id = T2.Id

where T2 is a table with the result of GROUP_CONCAT 其中T2是具有GROUP_CONCAT结果的表

41
42
43
44
45
46

Can you help me ? 你能帮助我吗 ?

Many thanks 非常感谢

Try the following 尝试以下

CREATE TABLE T2(Id int);
INSERT T2(Id)VALUES(41),(42),(43);

SELECT *
FROM
  (
    SELECT '41,42,43,44,45,46,' Id
  ) T
JOIN T2 on CONCAT(',',T.Id) LIKE CONCAT('%,',T2.Id,',%')

I hope I understood your question correctly. 希望我能正确理解您的问题。

I found another variant with FIND_IN_SET - SELECT WHERE IN with GROUP_CONCAT as input 我发现了另一个带有FIND_IN_SET变体- 使用GROUP_CONCAT作为输入的SELECT WHERE IN

I think it'll be more useful 我认为这会更有用

SELECT *
FROM
  (
    SELECT '41,42,43,44,45,46,' IdList
  ) T
JOIN T2 ON FIND_IN_SET(T2.Id,T.IdList)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM