Sql 使用WHERE子句的值范围进行查询?
我有一个谷歌电子表格,我想运行一个Sql 使用WHERE子句的值范围进行查询?,sql,google-sheets,Sql,Google Sheets,我有一个谷歌电子表格,我想运行一个查询功能。但是我希望WHERE语句检查一系列值。我基本上是在寻找在SQL中使用的语句-在Google电子表格中的等价物是什么?所以现在我有: =QUERY(Sheet1!A3:AB50,"Select A,B, AB WHERE B='"& G4 &"'") 这就行了。但我真正需要的是: =QUERY(Sheet1!A3:AB50,"Select A,B, AB WHERE B='"& G4:G7 &"'") 当然,这种说法是
查询
功能。但是我希望WHERE
语句检查一系列值。我基本上是在寻找在SQL中使用的语句-在Google电子表格中的等价物是什么?所以现在我有:
=QUERY(Sheet1!A3:AB50,"Select A,B, AB WHERE B='"& G4 &"'")
这就行了。但我真正需要的是:
=QUERY(Sheet1!A3:AB50,"Select A,B, AB WHERE B='"& G4:G7 &"'")
当然,这种说法是失败的。如何根据一系列值获取where?这些都是文本值,如果有区别的话。虽然我现在还没有找到完美的答案,但我可以找到解决问题的方法,可以在少量数据中使用(希望这里是这样:))
第一步:您应该创建一个“辅助单元格”,将G4:G7单元格与“|”字符连接起来:
=连接(G3,“|”,G4,“|”,G5,“|”,G6,“|”,G7)-假设它是单元格H2的内容
现在,您应该按如下方式更改上述查询:
=查询(Sheet1!A3:AB50,“选择A、B、AB,其中B与“^.*”(&H2&“.$”)匹配)
这应该能奏效。基本上,“matches”操作符允许使用正则表达式,这也允许使用|符号进行构造
正如我所说,这是一个解决办法,有缺点,但我希望它会有所帮助。我也有同样的问题,在我的研究中遇到了你的问题。你的串联想法让我思考。问题是我在where子句中使用的范围是动态的。行数将更改。这让我进入了连接函数,这使我得出以下结论:
=(QUERY('Sheet1!A3:AB50,"select A where B = "& JOIN(" OR B = ",ARRAY_CONSTRAIN($A$5:A,COUNTIF($G$4:$G,">0"),1)) &"")
COUNTIF
统计包含数据的行数。我使用的是这个范围内的数字,所以可能“!=”
比“>0”
更合适ARRAY\u constraint
使用仅包含数据的单元格创建数组JOIN
将范围转换为where子句的查询语言
需要在where子句开始时使用与JOIN
函数中delimeter中基本相同的文本。请注意,我使用的是数字,因此不需要在值周围使用'
。这就是我的电子表格中的工作原理,我希望它能有所帮助。太棒了!这里有一个小小的改进
而不是:
=连接(G3,“|”,G4,“|”,G5,“|”,G6,“|”,G7)
我们可以使用
=TEXTJOIN(“|”,1,G3:G7)
这也让我们能够处理更大的数组,因为将每个单元格逐个添加到公式中是没有意义的
UPD:
更进一步,我尝试将两个公式组合在一起,以排除帮助单元格,现在我们开始:
=查询(Sheet1!A3:AB50,“选择A、B、AB,其中B匹配“^”。(“&TEXTJOIN(“|“、1、G3:G7)”和“.$”)
在我自己的项目中使用了它,效果非常好