Sqlite - 在两个相同的表中查询1列,其中列等于一个值

时间:2014-04-30 11:46:07

标签: android sql sqlite

我有两个相同的表(month1,month2),我试图找到两个表中task1_done = 1的所有记录。我想要该集合中的最后一行(我将光标移动到最后一行)。我玩过内部自然连接,但似乎无法获得month2值。这就是我所拥有的:

String query =" SELECT m1.columnA,m1.columnB,m1.columnC,m1.columnD,m1.columnE,m1.columnF FROM month1 m1,month2 m2 WHERE m1.task1_done = 1 OR m2.task1_done = 1&#34 ;;

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:2)

我认为您希望此查询union all

select m.*
from (select *
      from months1
      union all
      select *
      from months2
     ) m
where task1_done = 1;

注意:我使用*作为方便,因为您说这两个表具有相同的结构。实际上,您应该从两个表中列出所需的列。

通常,具有相同布局的两个表是数据库设计错误的标志。通常更好的是有一个更大的表,另一列标识" month1"或" month2"。

编辑:

SQL表没有" last"值。如果您有可用于订购的ID或时间戳列,则可以执行以下操作:

select m.*
from (select *
      from months1
      union all
      select *
      from months2
     ) m
where task1_done = 1
order by id desc
limit 1;

答案 1 :(得分:1)

这些表是相关的还是有任何参考?如果没有,你可以单独声明并做一个工会

即。

select top 1 column1, column2.. from month1 WHERE task1_done = 1 order by IdentityColumn Desc
union 
select top 1 column1, column2.. from month2 WHERE task1_done = 1 order by IdentityColumn Desc