2012-08-11 86 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