在Sq Lite 3 Python中进行比较
我有一个Sq Lite 3数据库,其中包含列ID、名称和时间。 因此,我有最后一行,并使用python将其放置在var last_PERSON中在Sq Lite 3 Python中进行比较,python,database,sqlite,compare,local,Python,Database,Sqlite,Compare,Local,我有一个Sq Lite 3数据库,其中包含列ID、名称和时间。 因此,我有最后一行,并使用python将其放置在var last_PERSON中 your_rank = "SELECT usr_name,time FROM rank WHERE ID = (SELECT MAX(ID) FROM rank)" 我还有一个var行,它按时间顺序循环遍历每一行 sql = "SELECT usr_name,time FROM rank ORDER BY time " for row in cu
your_rank = "SELECT usr_name,time FROM rank WHERE ID = (SELECT MAX(ID) FROM rank)"
我还有一个var行,它按时间顺序循环遍历每一行
sql = "SELECT usr_name,time FROM rank ORDER BY time "
for row in cur.execute(sql):
我想比较一下:
您的_排名与按时间排序的行,并获得最后一个人的排名
我试过了
for row in cur.execute(sql):
sql_list.append(row)
if(row is your_rank):
this_is_your_rank = rank_number
rank_number += 1
但是我不能使用Sq Lite 3的if语句,我也无法找到任何解决方案来比较它们。谁能给我点一下吗
如果您不能,感谢您花时间阅读。您想
从时间
或类似的排名中选择count(ID)
在SQL结果上循环查找您想要的内容是很麻烦的,因为您只需要让数据库给出您想要的答案
编辑:
您的第一个查询(将表加入到表本身以获取具有最高ID的用户)可以是:
SELECT MAX(ID),usr_name,time FROM rank
您可以通过以下方式将它们组合为“获取最新用户名、时间和位置”:
python代码没有正确缩进,因此无效。你没有恰当地描述你想要实现的目标。很可能只需要一条SQL语句就可以完成,但不可能知道是哪一条,因为您没有解释要做什么。
SELECT
MAX(ID),usr_name,time, (SELECT COUNT(ID)+1 FROM rank WHERE time < r.time) [Pos]
FROM
rank r
last_user = cursor.execute('select max(id),usr_name,time from rank').fetchone()
last_user_rank = 1
for row in cursor.execute('select id,usr_name,time from rank order by time asc'):
if last_user[2] > row[2]:
last_user_rank += 1
else:
break
print last_user, last_user_rank