这个问题是关于使用=QUERY函数连接谷歌Electron 表格中的两个数据库

我有一张A1:C3的桌子

a d g
b e h
c f i

我还有一张桌子

c j m
a k n
b l o

我希望最后一张桌子像这样

a d g k n
b e h l o 
c f i j m

我可以很容易地在单元格D1中使用vlookup函数并将其粘贴下来,但我的数据集非常大.我需要一整页的vlookups,谷歌Electron 表格告诉我,我的复杂性已经到了极限.

我看看谷歌的查询语言参考...似乎没有提到任何类型的"连接"函数.你会认为这将是一个简单的"加入"类型的操作.

谁能不用vlookup解决这个问题?

推荐答案

Short answer

Google QUERY Language版本0.7(2016)不包括联接(左联接)运算符,但这可以通过使用数组公式实现,该公式的结果可以用作查询函数的输入或用于其他用途.

Explanation

数组公式和array handling features of Google Sheets使两个简单表之间的联接成为可能.为了便于阅读,建议的公式使用命名范围,而不是范围引用.

命名范围

  • 表1:Sheet1!A1:C3
  • 表2:表2!A1:C3
  • ID:Sheet1!A1:A3

公式

=Array公式(
   {
     table1,
     vlookup(ID,table2,COLUMN(Indirect("R1C2:R1C"&COLUMNS(table2),0)),0)
   }
)

comments :

  • 使用开放范围是可能的,但这可能会使Electron 表格速度变慢.
  • 要加快重新计算时间,请执行以下操作:
  1. Indirect("R1C2:R1C"&COLUMNS(table2),0)替换为表2中从2到列数的常数array.
  2. 从Electron 表格中删除空行

Example

参见this sheet中的示例

Note

2017年,谷歌改进了关于查询的英文官方帮助文章,QUERY function.它还没有包括像这样的主题,但可能有助于理解它是如何工作的.

Sql相关问答推荐

获取每个帖子的匹配关键字列表

如何更改函数返回的列名?

使用Lead获取下一个不同的日期

如何在Presto中将多个列合并到一个数组中

雅典娜嵌套Json提取液

更新其组的日期字段值小于最大日期减go 天数的记录

在迁移到.NET8后,使用Array.Containers的F#查询表达式失败

缺少日期标识

如何将不同层次的产品组和规格组合到最深一层?

将最近的结束日期与开始日期相匹配

如何将 START 和 END 日期之间的日期差异作为 SQL 中的单独列获取

SQL:考虑合并分支计算分支的增长百分比

SQL for Smarties 类型问题:从表中 Select 记录,并对某些值进行分组

如何为给定的股票数据集计算利润/亏损,确保先卖出先买入的股票

SQL中如何转置表格 UNPIVOT是唯一的 Select 吗?

从 varchar 列中删除特殊字符后的前面的零和字符时遇到问题

BigQuery Pivot 遗漏行

SQL日期比较用例;月初至今的报告

如何跨行合并以删除 SQL 中的空值?

SQL/Postgres:按日期和其他属性对相关性能进行分组