使用 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
假设我们有两个 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