2012-08-11 66 views
0

我的表是這樣的:SQL-從嵌套查詢訪問的列

 
_id  time name isNotFirstEntry 
1  55555 aaa  0 
2  66666   1 
3  77777   1 
4  88888 bbb  0 
5  99998   4 
6  99999   4 

即重複條目,name是空與原入境_id存儲在isNotFirstEntry。

我想檢索_id,time,name,no。 !重複的條目爲n,其中名稱= NULL

的我想是這樣的: select _id, time, name, (select count(isNotFirstEntry) from mytable where isNotFirstEntry=_id) as n from mytable where name!=null

當然,但不工作。嵌套查詢中的_id與外部部分不同。我需要從嵌套查詢中訪問外部部分的_id。

我使用android sdk,所以我只能使用sqlite。

回答

1

您需要進行連接。你可以做到這一點作爲一個相關子查詢:

select mt._id, mt.time, mt.name, 
     (select count(mt2.isNotFirstEntry) 
     from mytable mt2 
     where mt2.isNotFirstEntry=mt._id 
     ) as n 
from mytable mt 
where mt.name!=null 

或在顯式用組的加入:

select mt._id, mt.time, mt.name, count(mt2._id) as n 
from mytable mt left outer join 
    mytable mt2 
    on mt._id = mt2.isNotFirstEntry 
where mt.name is not null 
group by mt._id, mt.time, mt.name 
+0

救了我的天! btw指定內部表爲mt2不是必要的在第一種方法 – arnab321 2012-08-11 20:00:23

+0

不,你可以離開別名。但是,我認爲使用別名並在使用列時指定它們是一種很好的做法。 – 2012-08-11 21:49:24

+0

我想在外部列上使用別名而不是整個外部表上的別名,但顯然這是不可能的。任何想法爲什麼?例如: '選擇_id爲checkedId,時間,名稱, (從MYTABLE SELECT COUNT(isNotFirstEntry) 其中isNotFirstEntry = checkedId)從MYTABLE 其中name = null'ñ ! – 2015-09-13 16:23:15