如何在带条件的sqlite3 db中获取最后一条记录

时间:2018-08-02 11:44:14

标签: python sqlite

我正在尝试在sqlite3表中搜索记录以获取在where条件下插入的最后一条记录,但是我只能用一个condition WHERE CODE = df = "DS3243"来完成。但是我想做的是在多个WHERE条件jf = "QS2134", df = "DS3243", sf = "MS5787"下进行操作,这样我就可以使用所提供的代码插入最后一条记录。

DEMONTSTRATION

CODE              POINT

QS2134            1000

DS3244            2000

MS5787            3000

QS2134            130   

QS2134             200  # want to get this because it last with such code

DS3244             300

MS5787            4500

DS3244            860   # want to get this because it last with such code

MS5787            567   

MS5787            45009 # want to get this because it last with such code

我只能处理一个变量cur.execute("SELECT * FROM PROFILE WHERE CODE=? ORDER BY POINT ASC LIMIT 1 ",(df,)),但我想处理多个变量。

import sqlite3


jf = "QS2134"

df = "DS3243"

sf = "MS5787"


con = sqlite3.connect("TEST.db")
cur = con.cursor()
cur.execute("SELECT * FROM PROFILE WHERE CODE=? ORDER BY POINT ASC LIMIT 1 ",(df,)) # limit one means last one

rows = cur.fetchall()

for row in rows:
    print(row)


con.commit()
con.close()

2 个答案:

答案 0 :(得分:1)

我不确定我是否理解您的问题,但是您是否可能想将结果分组? 您要查找的是“ group by”子句吗?

类似的东西:

select CODE, MAX(POINT) group by CODE;

答案 1 :(得分:0)

我认为您只是在尝试扩展查询,在这种情况下,为什么不尝试字符串格式化?

x = "SELECT * FROM my_table where col1 = '{0}' or col2 ='{1}';".format(var_1, var_2)
cur.execute(x)

这样,您可以根据需要扩展查询条件。