SQLite:如何将订单限制的SQL与左连接查询组合在一起

时间:2016-10-11 05:00:47

标签: sqlite

我有A,B,C和D的记录。

我的SQL1 SELECT * FROM main_table order by main_table.date desc limit 2返回A和B.

我的SQL2 SELECT * FROM main_table left join sub_table using (key) where sub_table._id is not null返回B和C.

我想要一个返回A,B和C的SQL语句。基本上,我想加入SQL1或SQL2

如何以最佳方式组合这两个SQL(在SQLite中)?

我的数据如下

 main_table
_id  date        key
1    2016-08-04  D
2    2016-10-06  A
3    2016-09-04  B
4    2016-07-05  C

sub_table
_id  age  key
1    8    B
2    9    C

欲望输出

m._id  m.date     m.key  s._id s.age s.key
2     2016-10-06  A
3     2016-09-04  B      1     8     B
4     2016-07-05  C      2     9     C

我的选择逻辑......我想选择前两个最新数据,以及具有年龄的数据。我不关心的其他人(即D不在前2名,并且没有年龄)。

1 个答案:

答案 0 :(得分:1)

如果我读得正确,那么UNION可能是您的想法:

SELECT * FROM
   (SELECT * FROM main_table LEFT JOIN sub_table USING (key)
    ORDER BY date DESC LIMIT 2)
UNION
    SELECT * FROM main_table LEFT JOIN sub_table USING (key)
    WHERE sub_table._id IS NOT NULL