2016-02-29 79 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

是赞同的,你的解决方案是正确的,因为在这个问题没有更好的解决方案。再次感谢。 –