sqlite - SQLite:如何将顺序限制的SQL与左联接查询结合在一起

标签 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名,并且没有年龄)。

最佳答案

如果我没看错,那么您可能会想到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

关于sqlite - SQLite:如何将顺序限制的SQL与左联接查询结合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39970760/

相关文章:

sql - 计算不同表中不同值的计数,其中列对于单独的表是通用的

android - 如果另一列匹配,则添加一列的所有值

ios - va_args() 导致 EXC_BAD_ACCESS

android - 使用 SQLiteOpenHelper 在 Android 中附加 sqlite 数据库

sqlite - 如何解决此代码中SQLite的LEAD函数错误?

python - 将 sqlalchemy 和 Sqlite 与多重处理结合使用

sql - T-SQL,如何执行此分组查询?

android - 如何使用选择参数从 android 中的内容提供者查询特定行

objective-c - 绑定(bind)后打印/记录 SQLite 语句

sql - 在 Where 子句中使用表