使用 SingleStore 连接两个带有整数字符串的表

Joining two tables with string of integers using SingleStore

假设我们有两个 table:动物园和动物。 zoo 包含表示动物 ID 的整数字符串,例如:'1,2,3',以及对应的 table 动物:1:'iguana',等等

create table zoo (zooid int, animals varchar(10));
insert into zoo values
(1,'1,2'),(2,'1,2,4');

create table animals (animalid  int, animal varchar(10));
insert into animals values
(1,'Bear'),(2,'Wolf'),(3,'Pig'),(4,'Lion');

如何连接这两个 table 以便对于动物园 ID,动物列具有 varchar(100) 'Bear, Lion'?例如:

zooid animals
1 'Bear, Wolf'
2 'Bear, Wolf, Lion'

使用 MySQL 你可能会使用 FIND_IN_SET() 但我们使用 SingleStore。 我知道数据没有标准化,但不幸的是我对此没有任何发言权。 谢谢!

您可以使用 SPLIT 和 TABLE 内置函数来完成此操作。 SPLIT 是一个内置函数,可让您将逗号(或其他分隔符)分隔的列表转换为数组,然后 TABLE 是一个 TVF,可将其转换为关系:

select  zooid, 
        group_concat(animal) 
from zoo 
join TABLE(SPLIT(zoo.animals,',')) 
join animals on animalid = table_col 
group by 1