如何使用Python从SQLite中的n个不同表中获取最后n条记录
我想从数据库中获取所有可用表的最后一条记录,例如: 我有两张桌子:如何使用Python从SQLite中的n个不同表中获取最后n条记录,python,sqlite,Python,Sqlite,我想从数据库中获取所有可用表的最后一条记录,例如: 我有两张桌子: Table1 ( "name" TEXT, "price" NUMERIC, "amount" INTEGER, "value" INTEGER ) 及 当我在表中添加一些内容时,value记录变量变为value=value+1,依此类推,类似于id。我希望获得每个表中具有max(value)的最后一条记录,
Table1 (
"name" TEXT,
"price" NUMERIC,
"amount" INTEGER,
"value" INTEGER
)
及
当我在表中添加一些内容时,value记录变量变为value=value+1,依此类推,类似于id。我希望获得每个表中具有max(value)的最后一条记录,并从所有不同的可用表中打印该记录的名称、价格和金额
我用python编写了以下代码:
cur.execute("SELECT * FROM Table1 WHERE value=(SELECT max(value) FROM Table1)")
data = cur.fetchall()
for row in data:
print("", row[0], "\t Χ ", row[2], "\t %0.2f" % row[1],"€")
但我只能通过重复这段代码两次(或者对于表1、表2……表n,重复n次)来做到这一点。我想要一种简单的方法来实现这一点,而不必在我的程序中重复上面的代码N次(表N)
我还尝试做:
cur.execute("SELECT Table1.*, Table2.* FROM Table1, Table2 WHERE Table1.value=(SELECT max(Table1.value) FROM Table1) AND Table2.value=(SELECT max(Table2.value) FROM Table2)")
但它不起作用。听起来像是XY问题。如果有多个表都具有相同的列,则可能是一个糟糕的数据库设计。不管怎么说,您想要的都可以实现,但是如果所有表中的所有列都具有相同的名称,您希望得到的记录是什么样子的?例如,表1(“沙拉”、“3.00”、“1”、“0”)和表2(“牛肉”、“7.00”、“3”、“1”)这是订单的两个表中的最后一条记录,我希望能够打印最后选定的记录,即客户的订单。N个不同的表可以有N个不同的类别来存储订单中的项目。是的,就像我说的,糟糕的设计。只需添加一个“category”列,并只使用一个表。如果您希望坚持N-tables设计,并且不希望N-time复制和粘贴相同的代码,只需将其包装在循环中并动态构建sql语句。同样,如果您想要一个单一的查询解决方案(只返回N个表的一条记录),您将很难弄清楚哪个行索引属于哪个表。
cur.execute("SELECT Table1.*, Table2.* FROM Table1, Table2 WHERE Table1.value=(SELECT max(Table1.value) FROM Table1) AND Table2.value=(SELECT max(Table2.value) FROM Table2)")