2016-02-29 76 views
1

選擇具有多個值的行可以說我有一個模式: 密鑰字符串NULLABLE
值INTEGER反覆谷歌的BigQuery在重複場

現在,請注意,第二列是整數的重複場,

比方說的數據是這樣的:

鍵: 'ABC' 值:1 2 3(3個獨立的值,下同值)

關鍵: '高清' 值:1 2 5

關鍵: 'GHI' 值:1 6 9

在這裏,我想找出其中具有值1和2把鑰匙?期望'abc'和'def'作爲結果集。

正在尋求一個查詢。我想要一個'和'('進'在這裏不起作用)。我需要這兩個值作爲結果返回任何鍵。

回答

2
SELECT 
    key, 
    SUM(values = 1 or values = 2) WITHIN RECORD AS check 
FROM yourtable 
HAVING check = 2 
+0

到目前爲止,這是最乾淨的答案,考慮到谷歌bq沒有比這更像'select key from [x] where containsAll(...)'這樣的東西。但是在做程序設計的時候,當你有太多的值可供選擇時,上面的方法並沒有什麼幫助,因爲查詢需要不斷地改變,並且無法預測每次的時間性能,特別是當應用程序面向客戶時。但是,這絕對是來自所有其他替代方案的最簡潔答案,其中包括自我加入和分組。好答案! –

+0

@ppa - 你的問題在這裏非常具體 - 沒有單一的標誌,你想要更通用的解決方案(就像你在評論中聽到的那樣)。如果你可以用更通用的問題發佈另一個問題 - 我希望我們可以找到更合適的解決方案 –

+0

是贊同的,你的解決方案是正確的,因爲在這個問題沒有更好的解決方案。再次感謝。 –