考慮以下資料集(可能看起來很奇怪,但我想說明字串是任意的):
表 A
| 票號 | 開始動物 | 終結動物 |
|---|---|---|
| 1 | 猴 | 蜜蜂 |
| 1 | 獅子 | 水牛 |
表 B
| 動物 | 序列 |
|---|---|
| 猴 | 1 |
| 斑馬 | 2 |
| 蜜蜂 | 3 |
| 龜 | 4 |
| 獅子 | 5 |
| 水牛 | 6 |
是否可以根據每一行中的不同“范圍”檢索與 Ticket ID 1 對應的動物?例如,對于 Ticket ID 1,應檢索以下動物:猴子、斑馬、蜜蜂、獅子、水牛。
如您所見,動物字串本身沒有順序邏輯,但可以利用順序。我只是想不出如何在單個查詢中為每一行參考它。
編輯 作為一種極端情況,有時 EndAnimal 甚至可能沒有序列開始,在這種情況下,應該只回傳 StartAnimal。例如,假設 Bee 不在序串列中,我們應該只得到 Monkey、Lion 和 Buffalo。那是 SQL 可以處理的嗎?
謝謝!
uj5u.com熱心網友回復:
有很多方法,其中一種方法是內部連接表以找到相應的開始和結束序列,然后找到符合條件的行:
with s as (
select bs.Sequence s1, IsNull(be.sequence,1) s2, a.ticketId
from a left join b bs on bs.animal = a.StartAnimal
left join b be on be.Animal = a.EndAnimal
)
select b.Animal
from b
join s on b.Sequence >=s1 and b.Sequence <= s2
where s.ticketId = 1
order by b.Sequence;
示例小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/516149.html
標籤:sql加入
下一篇:將匹配元素作為串列回傳的快速方法
