我有一個'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