【发布时间】:2014-11-21 14:20:31
【问题描述】:
我在 SQLITE 中有两个表
“端口”是
ticker weight
abc 1
bcd 2
cde 3
“bench2”是
ticker weight
abc 3
bcd 2
cde 1
我正在尝试学习如何在 SQLITE 中使用外连接。从 LEFT OUTER JOIN 开始,如下所示
SELECT * FROM port LEFT OUTER JOIN bench2 ON port.ticker = bench2.ticker;
我得到结果
ticker weight ticker weight
abc 3 NULL NULL
bcd 2 bcd 2
我希望看到的时候
ticker weight weight
abc 1 3
bcd 2 2
cde 3 1
我做错了什么,我将如何获得我想要的结果?
如果可能,第二个问题 - 我怎样才能获得额外的一行
ticker weight weight
abc 1 3
bcd 2 2
cde 3 1
def NULL 3
如果“bench2”有多余的行,则在结果表中,
ticker weight
abc 3
bcd 2
cde 1
def 3
而port 保持不变。
【问题讨论】:
-
修正问题,使表名和列名始终一致地使用。
-
您应该在您的结果中获得两个
ticker和两个weight列,但如果您确实获得了您使用数据和查询描述的结果行,那么SQLite 出了问题。我更倾向于相信您的数据与您所说的不同,或者您可能执行了不同的查询。 -
使用 USING 和外连接:sqlfiddle.com/#!5/b09132/2
-
谢谢@Wiseguy。您的代码有效,但我自己的代码无效。我使用最近下载的 pycharm 版本作为我的 IDE。不要认为这应该有任何影响,但会检查。