Sqlite加入(或其中的一些变体)

时间:2011-10-04 20:37:51

标签: sql sqlite join

给出这样的结果集:

Col1    Col2
============
BAML    491
BARC    362
BDPT    1
BNP     9

(从表中选择Col1,count(some_col)为Col2,其中another_col ='SomeCondition'组由Col1开始)

和另一个像这样:

Col3    Col2
============
BAML    494
BARC    366
BDPT    1
BNP     10
CALY    3

(从表中选择Col3,count(some_col)为Col2,其中another_col ='SomeOTHERCondition'组由Col3提供)

如何“合并”这两个查询以形成:

BAML    491       494
BARC    362       366
BDPT    1         1
BNP     9         10
CALY              3

请注意,前两个查询在相同的表上运行。我可以在这里看到一些Join的变种帮助(没有那么多的sql工作)。我只是无法弄清楚如何将这两个查询放入单个查询中以获得合并的reusltset。

1 个答案:

答案 0 :(得分:1)

试试这个:

select b.col1, b.col2, a.col2
from (
    select Col3, count(some_col) as Col2
    from Table
    where another_col = 'SomeOTHERCondition'
    group by Col3
) as a
left outer join (
    select Col1, count(some_col) as Col2
    from Table
    where another_col = 'SomeCondition'
    group by Col1
) as b
on a.col3 = b.col1

我不确定SQLite是否支持这一点。


根据评论,上面的确有效,但你真的想要一个完整的外部联接,而SQLite不喜欢这样。您可以尝试使用两个LEFT OUTER JOIN和一个UNION伪装它:

select b.col1, b.col2, a.col2
from ... as a left outer join ... as b ...
UNION
select b.col1, b.col2, a.col2
from ... as b left outer join ... as a ...