我在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
abc 3
bcd 2
... (no other rows)
Bench2:
ticker weight
bcd 2
... maybe other rows, but none having ticker = 'abc'
对于列,当您执行除
NATURAL JOIN
以外的任何连接时,每个连接表中的每一列都有一个结果列,包括当具有相同名称的列时,并且包括出现在连接条件中的列。您可以限制哪些列显示在最终查询结果中,和/或可以通过在选择列表中指定所需的别名来为其指定首选别名。