假設我們有兩張桌子:動物園和動物。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) 'Bear, Lion'?例如:
| 人形 | 動物 |
|---|---|
| 1 | 《熊,狼》 |
| 2 | 《熊、狼、獅子》 |
使用 MySQL,您可能會使用 FIND_IN_SET(),但我們使用 SingleStore。我知道資料沒有標準化,但不幸的是我對此沒有任何發言權。謝謝!
uj5u.com熱心網友回復:
您可以使用 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/341356.html
下一篇:計算多行SQL之間的日期差異
