Join 水平联合所有

Join 水平联合所有,join,sqlite,union-all,Join,Sqlite,Union All,我有两个表,需要从每个表中选择一列。 这必须在单个查询中完成。 好消息是这两列的顺序是正确的,它们都包含相同数量的行。 现在,我知道我可以通过rowid连接这两个表,但是比较起来很慢。就我而言,没有必要。。。我需要更像水平并集的东西来连接两个长度相等的列 在SQLite 3中有类似的功能吗 谢谢 表1: | timestamp | FIELD1 | FIELD2 | ... | 12345678 | 000000 | 000000 | ... | 00154789 | 000000 | 00

我有两个表,需要从每个表中选择一列。 这必须在单个查询中完成。 好消息是这两列的顺序是正确的,它们都包含相同数量的行。 现在,我知道我可以通过rowid连接这两个表,但是比较起来很慢。就我而言,没有必要。。。我需要更像水平并集的东西来连接两个长度相等的列

在SQLite 3中有类似的功能吗

谢谢

表1:

| timestamp | FIELD1 | FIELD2 | ...
| 12345678  | 000000 | 000000 | ...
| 00154789  | 000000 | 000000 | ...
| temperature |
| 1000000000  |
| 2000000000  |
表2:

| timestamp | FIELD1 | FIELD2 | ...
| 12345678  | 000000 | 000000 | ...
| 00154789  | 000000 | 000000 | ...
| temperature |
| 1000000000  |
| 2000000000  |
所需选择输出

| timestamp | temperature |
| 12345678  | 1000000000  |
| 00154789  | 2000000000  |
查询

SELECT timestamp, temperature
FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.rowid = TABLE2.rowid;
这在我的测试应用程序中需要约0.75秒。当我稍后在程序中进行两次单独选择并连接输出时,需要~0.4秒,但这不是很方便。最快的方法(~0.23s)是将两列都放在一个表中,但这是浪费,因为我有多个版本的TABLE2共享相同的时间戳。

两个或多个简单的SELECT语句 可以连接在一起形成一个 使用UNION、UNION组合选择 全部、相交或除运算符。在里面 一个复合选择,所有成分 SELECTs必须返回相同数量的 结果列。作为 复合选择必须是简单选择 语句,它们可能不包含顺序 附加或限制条款。订购和 限制条款只能出现在 选择整个化合物的结尾

使用UNION创建的复合选择 ALL运算符返回来自的所有行 选择位于联合体左侧的选项 所有运算符,以及中的所有行 选择它的右边。这个 联合运算符的工作方式与 联合所有行,但重复行除外 从最终结果集中删除。 INTERSECT操作符返回 结果的交集 左右选择。除了 运算符返回行的子集 由左选择返回的 右边的也没有返回 选择删除重复的行 根据INTERSECT和 结果集之前的运算符除外 他回来了

两个或多个简单的SELECT语句 可以连接在一起形成一个 使用UNION、UNION组合选择 全部、相交或除运算符。在里面 一个复合选择,所有成分 SELECTs必须返回相同数量的 结果列。作为 复合选择必须是简单选择 语句,它们可能不包含顺序 附加或限制条款。订购和 限制条款只能出现在 选择整个化合物的结尾

使用UNION创建的复合选择 ALL运算符返回来自的所有行 选择位于联合体左侧的选项 所有运算符,以及中的所有行 选择它的右边。这个 联合运算符的工作方式与 联合所有行,但重复行除外 从最终结果集中删除。 INTERSECT操作符返回 结果的交集 左右选择。除了 运算符返回行的子集 由左选择返回的 右边的也没有返回 选择删除重复的行 根据INTERSECT和 结果集之前的运算符除外 他回来了


@mu在水平方向上太短了,我的意思是“彼此相邻”,而不是“在彼此的顶部”。我需要结果集中的两个短列而不是一个长列…这听起来很像一个标准联接,适当的索引应该可以让它更快。@mu太短,rowid应该总是索引,但它仍然比两个单独的选择慢很多(50%)。@mu太短,我的意思是“彼此相邻”而不是“相邻”“在彼此的顶部”。我需要结果集中的两个短列,而不是一个长列…这听起来很像一个标准联接,适当的索引应该可以使它更快。@mu太短,rowid应该总是被索引,但它仍然比两个单独的选择慢很多(50%)。