我想选择一些列并在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
编辑:我更新了示例数据,因为人们对日期感到困惑
1条答案
按热度按时间kqhtkvqz1#
第一个示例选择
date
和PCEDurableGoods
,并根据查询的请求仅返回这两列。第二个示例使用通配符,并再次按预期返回联接中的所有列。就实际的行集而言,您提供的第二个输出与输入不对应。2022-05-01/2022-06-01不在第二个表中,应该在
FedRate
中返回NULL。这很可能意味着您没有对提供的输入执行查询。