2014-04-30 37 views
-1

我有兩個相同的表(month1,month2),我試圖從兩個表中task1_done = 1找到所有記錄。我希望最後一行設置(我將光標移到最後)。我玩過內部外部自然連接,但似乎無法獲得month2值。這裏是我的:Sqlite - 查詢1列在兩個相同的表中,其中列等於值

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「;

任何幫助將是偉大的!

+0

像'SELECT * FROM(SELECT * FROM MONTH1 UNION ALL SELECT * FROM MONTH2)一個WHERE task1_done ='1''應該工作...?問題是「最後」的價值並不清楚,你沒有訂購任何東西,這是最後一個? –

+0

我使用cursor.moveToLast – Stingalingaling

回答

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 
+0

謝謝大家的回覆!我結合了你的兩個回覆。我檢查了一個更接近我的DB樂隊助手的那個。 串查詢=「 SELECT m1.columnA,m1.columnB,m1.columnC,m1.columnD,m1.columnE,m1.columnF FROM MONTH1 M1 WHERE m1.task1_done = 1 UNION SELECT m2.columnA,平方米。 columnB,m2.columnC,m2.columnD,m2.columnE,m2.columnF FROM month2 m2 WHERE m2.task1_done = 1「; – Stingalingaling

+0

戈登是正確的。如果所有數據都在同一個表中,我會有一個簡單的查詢。 – Stingalingaling

+0

使用我的UNION(上圖)你可以聯盟兩個以上的表嗎?我試着以同樣的方式添加month3,但它只查詢month1和month2。 – Stingalingaling

2

我想你想爲這個查詢union all

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

注:我已經使用*是爲了方便,因爲你說的兩個表具有相同的結構。實際上應該從兩個表中列出所需的列。

通常,具有相同佈局的兩個表格是不良數據庫設計的標誌。有一張更大的表格,另一列標識「月1」或「月2」通常更好。

編輯:

SQL表沒有「最後」值。如果你有一個id或時間戳列,你可以使用排序,那麼你可以做:

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

比你的答覆。我同意,相同的表是一個不好的數據庫設計 - 在更大的表上的一列區別會更好。但是,我無法在時間重建數據庫,所以我只有一個樂隊助手查詢。我會在今晚進行測試。 – Stingalingaling

相關問題