通过使用struct构造函数语法,IN可以与多部分键一起使用吗?

用户444422

我想知道以下语法的含义,该语法取自https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#in-operators

(Key1, Key2) IN ( (12,34), (56,78) )
(Key1, Key2) IN ( SELECT (table.a, table.b) FROM table )

含义是当key1的值为12或34且key2的值为56或78时显示行。我正确吗?如果不是简单的例子,将有助于理解。

米哈伊尔·伯利安(Mikhail Berlyant)

考虑下面的例子

#standardSQL
WITH t AS (
  SELECT 1 id, 12 key1, 13 key2 UNION ALL
  SELECT 2, 12, 34 UNION ALL
  SELECT 3, 56, 57 UNION ALL
  SELECT 4, 56, 78
)
SELECT * FROM t
WHERE (key1 = 12 AND key2 = 34)
OR (key1 = 56 AND key2 = 78)   

现在您可以如下重写它

#standardSQL
WITH t AS (
  SELECT 1 id, 12 key1, 13 key2 UNION ALL
  SELECT 2, 12, 34 UNION ALL
  SELECT 3, 56, 57 UNION ALL
  SELECT 4, 56, 78
)
SELECT * FROM t
WHERE (key1, key2) IN ((12,34),(56,78)) 

这使它(取决于用户的首选项)更具可读性

在两种情况下,输出均为

Row id  key1    key2     
1   2   12      34   
2   4   56      78     

语法(key1, key2)将这两个值合并为一个STRUCT,然后与另一个STRUCT进行比较-(12,34)(56,78)

与第二个示例相同

(Key1, Key2) IN ( SELECT (table.a, table.b) FROM table )

在第一个示例中,从选择语句与常量中“获取”了合格的结构

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么不能将构造函数语法与“ unsigned int”类型一起使用?

箭头函数语法不能与webpack一起使用?

可以将构造函数注入与泛型一起使用吗?

您可以将训练参数与 tf.keras.Model() 构造函数一起使用吗?

我可以将变量函数与语言构造一起使用吗?

为什么Mongoose的预钩不能与Fat-arrow函数语法一起使用

我可以将std :: make_shared与没有参数构造函数的结构一起使用吗?

我可以在XUnit构造函数中自定义Fixture以便与Theory和AutoData一起使用吗?

C ++这个很少使用的构造函数语法是什么?

我可以将 mapreduce 与一对键和一对值一起使用吗?

moveToThread()和start()可以与未构造的对象一起使用吗?

我可以将BOOST_FUSION_ADAPT_STRUCT与继承的东西一起使用吗?

改造-@Body参数不能与形式或多部分编码一起使用

与多部分数据的 multer 一起使用时,hasOwnproperty 变得未定义

将扩展语法与函数Arguments对象一起使用

fmap如何与数据构造函数一起使用?

FnToProduct无法与类型构造函数一起使用

将构造函数与多个文件一起使用Javascript

将Call方法与构造函数一起使用

我们可以通过masstransit一起使用RabbitMQ和Mediatr吗?

DateTieredCompactionStrategy是否可以与组合键一起使用?

我可以创建只能与defer一起使用的函数吗?

lodash zip函数可以与数组数组一起使用吗?

我可以将DT软件包与RShiny中的tabsetpanel函数一起使用吗?

setTimeout可以与闭包内部的函数一起使用吗?

我们可以将Rcpp与多个C ++函数一起使用吗?

我可以将变量与某些函数的值一起使用吗

别名可以与ng-disabled中的函数调用一起使用吗?

我可以将指针算法与堆函数一起使用来存储数组吗?