【发布时间】:2022-12-11 09:04:20
【问题描述】:
我想选择一些列并在 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
第一个代码 sn-p (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
编辑:我更新了示例数据,因为人们对日期感到困惑
【问题讨论】:
-
我无法重现你的结果:dbfiddle.uk/dJRqAgUx
-
我编辑了数据以使其可重现。您的 dbfiddle 完全重现了问题
-
你是什么意思问题?查询按预期工作:dbfiddle.uk/zcz67drB
-
是什么让你认为它不加入?
-
这是一个使用 LEFT 将第一个表连接到第二个表的查询并仅返回第一个表的列的查询。你期待什么?花一些时间阅读有关 LEFT 连接的信息:sqlitetutorial.net/sqlite-left-join