我有一個表,我希望能夠查詢該表以獲取定義的值集中的行。如果需要,我可以創建新的表結構,因為這是用于各種排行榜的臨時資料。
可以通過將許多令牌組合在一起來創建令牌集。我想做的是找到所有在定義集中具有所有令牌的地址。
不確定我是否需要重新建模資料,或者我是否只是缺少一個簡單的查詢設定。
所以在下面的資料中,我想根據 TokenSet“SetA”回傳地址 1234。
代幣地址
| 令牌ID | 地址 |
|---|---|
| AA | 1234 |
| BB | 1234 |
| 抄送 | 1234 |
| DD | 1234 |
| AA | 4321 |
| 抄送 | 4321 |
令牌集
| 令牌ID | 放 |
|---|---|
| AA | 組A |
| BB | 組A |
| 抄送 | 組A |
uj5u.com熱心網友回復:
這是經典的關系除法。有很多不同的解決方案。
如果您想同時跨多個集合執行此操作,一種方法是使用視窗函式
SELECT
ts.[Set],
ta.Address
FROM TokenAddress ta
JOIN (
SELECT *,
Total = COUNT(*) OVER (PARTITION BY ts.[Set])
FROM TokenSet ts
) ts ON ta.TokenID = ts.TokenID
GROUP BY
ts.[Set], ta.Address
HAVING COUNT(*) = MIN(ts.Total);
SQL小提琴
uj5u.com熱心網友回復:
如果集合和地址包含非重復的 tokenID,您可以執行以下操作:
select a.address
from token_sets s
join token_address a on a.tokenid = s.tokenid
where s.set = 'SetA'
group by a.address
having count(*) = (select count(*) from token_sets where set = 'SetA')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/474583.html
上一篇:使用T-SQL滾動n天活躍用戶的COUNTDISTINCT
下一篇:在另一個表中保留一個表的記錄計數
