使用select的SQLite连接未按预期连接

tzxcd3kk  于 2022-11-30  发布在  SQLite
关注(0)|答案(1)|浏览(145)

我想选择一些列并在SQLite中创建一个视图。为什么以下代码段返回不同的值?

SELECT date, PCEDurableGoods FROM debtandsavings
left join (select date, FedRate FROM rates) using (date);

但这是可行的

SELECT * FROM debtandsavings
left join rates using (date);

前者返回第一个列出的表而不进行连接,而后者返回按预期连接的完整表
下面是一个数据示例

date            PCEDurableGoods
2022-09-01      6.612628882215829
2022-08-01      6.581442803985115
2022-07-01      6.573571833810114
2022-06-01      6.573321162184561
2022-05-01      6.50050461361015

date            FedRate
2022-09-01      2.56
2022-08-01      2.33
2022-07-01      1.68
2022-06-01      1.21
2022-05-01      0.77

来自第一个代码片段(foobar)结果

date            PCEDurableGoods
2022-09-01      6.612628882215829
2022-08-01      6.581442803985115
2022-07-01      6.573571833810114
2022-06-01      6.573321162184561
2022-05-01      6.50050461361015

第二个代码的结果(预期)

date        PCEDurableGoods     FedRate
2022-09-01  6.61262888221583    2.56
2022-08-01  6.58144280398512    2.33
2022-07-01  6.57357183381011    1.68
2022-06-01  6.57332116218456    1.21
2022-05-01  6.50050461361015    0.77

编辑:我更新了示例数据,因为人们对日期感到困惑

kqhtkvqz

kqhtkvqz1#

第一个示例选择datePCEDurableGoods,并根据查询的请求仅返回这两列。第二个示例使用通配符,并再次按预期返回联接中的所有列。
就实际的行集而言,您提供的第二个输出与输入不对应。2022-05-01/2022-06-01不在第二个表中,应该在FedRate中返回NULL。这很可能意味着您没有对提供的输入执行查询。

相关问题