我有两个相同的表(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 ;;
任何帮助都会很棒!
答案 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