我有一个'cellid''date'(datetime)和'block'(real)列的表。有没有更好的方法来做到这一点?
我正试图找到所有在过去3天里block> 1的id。
目前,我正在做这样的:
cells = npar.db.execute("SELECT cellid FROM data WHERE block > 1 AND date=?", (files[0][1],)).fetchall()
cells1 = npar.db.execute("SELECT cellid FROM data WHERE block >1 AND date = ?", (files[1][1],)).fetchall()
self.common(cells,cells1)
cells1 = npar.db.execute("SELECT cellid FROM data WHERE block >1 AND date = ?", (files[2][1],)).fetchall()
self.common(cells,cells1)
print len(cells)
def common(self,a,b):
for item in a:
if item not in b:
a.remove(item)
b = npar.db.execute("SELECT cellid FROM data WHERE block > 1 AND date >= ? GROUP BY cellid HAVING COUNT(cellid) = 3", (files[2][1],)).fetchall()
print len(b)
LEN(B)不等于LEN(细胞)
你的“HAVING COUNT(cellid)= 3”子句是没有意义的。您最后的查询只会选择那些正好出现三个blockid> 1且date> =您的时间限制的cellid。 – 2011-03-22 16:26:25
这正是我想要的,我想知道它为什么不等于len(cells) – jck 2011-03-23 05:25:32