我在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以外的任何连接时,每个连接表中的每一列都有一个结果列,包括当具有相同名称的列时,并且包括出现在连接条件中的列。您可以限制哪些列显示在最终查询结果中,和/或可以通过在选择列表中指定所需的别名来为其指定首选别名。

09-26 02:53