假设我们有两张表:动物园和动物。Zoo包含一串表示动物id的整数,例如:' 1,2,3',以及对应的动物表: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');
如何连接这两个表,使得对于一个动物园id,动物列是varchar(100)"熊,狮子"?例如:
<表类>动物性的 动物 tbody><<tr>1 "熊,狼"> 2 '熊,狼,狮子' 表类>
可以通过内置的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