2016-11-15 95 views
0

我正在一個項目,這需要我在android數據庫中做一些查詢。但是,我對數據庫完全陌生,對於如何處理這種情況我有點困惑。這裏有一個粗略的例子來展示我的問題。Android數據庫查詢跨行檢查

對於像這樣的表:

表A:

-------------------------------------------------------- 
| _id | name | mimetype | data1 | data2 | data3 | 
-------------------------------------------------------- 
| 1 | user1 |  mime1 | val1 | val2 |  x | 
-------------------------------------------------------- 
| 2 | user1 |  mime2 | val3 | val4 |  y | 
-------------------------------------------------------- 
| 3 | user1 |  mime3 | val8 | val5 |  a | 
-------------------------------------------------------- 
| 4 | user2 |  mime2 | val6 | val7 |  q | 
-------------------------------------------------------- 
| 5 | user2 |  mime3 | val9 | val10 |  a | 
-------------------------------------------------------- 
| 6 | user3 |  mime1 | val11 | val12 |  b | 
-------------------------------------------------------- 

基本上,我想,當符合以下做一個查詢,從表的名稱,數據1,數據2列返回數據標準:

  1. MIME類型= MIME2
  2. 有在具有相同的名稱和它的MIME類型= mime3和數據表中的另一行3 = a

我想知道如何在一個查詢中做到這一點。

如果任何人都可以給出一些方法來解決這個問題,那就太棒了!謝謝!

+1

請提供一些示例數據和您所需的輸出。 (請參閱[如何 格式堆棧溢出中的SQL表格 後?](http://meta.stackexchange.com/q/96125)如何添加一些。) –

+0

感謝您的信息,我已經做到了一張桌子,雖然不是很好看,Lol – user7153368

回答

0

這可以通過EXISTS operator完成和correlated subquery

SELECT ... 
FROM TableA 
WHERE mimetype = 'mime2' 
    AND EXISTS (SELECT 1 
       FROM TableA AS T2 
       WHERE T2.name = TableA.name 
       AND T2.mimetype = 'mime3' 
       AND T2.data3 = 'a'); 
+0

第4行中的「1」是指什麼?當你比較T2.name = TableA.name時,聽起來像「1」是指tableA的副本。你能解釋一點嗎? – user7153368

+0

閱讀我鏈接到的文檔。 –

+0

謝謝,儘管我決定在最後使用子查詢IN。該示例幫助很大! – user7153368