SQL GROUP_CONCAT 在子查询中没有给出想要的数据

SQL GROUP_CONCAT in subquery does not give the desired data

我正在尝试 select 使用子查询获取数据。 如果我 运行 没有其他东西的子查询按预期工作, 否则它 return 仅来自 1 行而不是 4 的数据。

SELECT t.IDS,
(
    SELECT GROUP_CONCAT(_t.DATA SEPARATOR ';')
    FROM table _t
    WHERE _t.ID IN (t.IDS)
) as DATA
FROM (
    SELECT '1,2,3,4' as IDS
) t;

Table:

ID DATA
1 Test
2 Test1
3 Test2
4 Test3

查询应该return这样: IDS: '1,2,3,4' 数据:'Test;Test1;Test2;Test3'

目前return是这样的: IDS: '1,2,3,4' 数据:'Test'

上面的查询只是一个例子。

你的tablet是一个字符串所以IN不行,你可以用FIND_IN_SET代替,但是性能不好

CREATE TABLE tab1 (
  `ID` INTEGER,
  `DATA` VARCHAR(5)
);

INSERT INTO tab1
  (`ID`, `DATA`)
VALUES
  ('1', 'Test'),
  ('2', 'Test1'),
  ('3', 'Test2'),
  ('4', 'Test3');
SELECT t.IDS,
(
    SELECT GROUP_CONCAT(_t.DATA  ORDER BY _t.ID SEPARATOR ';')
    FROM tab1 _t
    WHERE FIND_IN_SET(_t.ID,t.IDS)
) as DATA
FROM (
    SELECT '1,2,3,4' as IDS
) t;
IDS     | DATA                  
:------ | :---------------------
1,2,3,4 | Test;Test1;Test2;Test3

db<>fiddle here