我在SQLITE中有两个表
“port”是
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
保持不变。
答案 0 :(得分:2)
对结果进行逆向工程会让我得出结论,您的数据与您说的不同。你似乎有这个:
端口:
ticker weight
abc 3
bcd 2
... (no other rows)
bench2:
ticker weight
bcd 2
... maybe other rows, but none having ticker = 'abc'
对于列,当您执行除NATURAL JOIN
以外的任何连接时,每个连接表中的每列都有一个结果列,包括存在具有相同名称的列,并包括列时出现在连接条件中。您可以限制哪些列出现在最终查询结果中,和/或您可以通过在选择列表中指定所需的列来为其分配首选别名。
答案 1 :(得分:-1)
这样的事情怎么样?
SELECT table2.ticker,
table1.weight,
table2.weight
FROM table2
LEFT OUTER JOIN table1
ON table1.ticker = table2.ticker