按日期排序列ASC并删除特定名称的顶行

时间:2015-10-12 19:33:13

标签: python mysql sql

列为NameScoreDate。 我希望按date对一个名称进行排序,并使用python和sql删除最旧的记录。 我试过了:

cursor.execute("SELECT * FROM "+group+" ORDER BY date ASC LIMIT 0, 50000;")
cursor.execute("DELETE FROM "+group+" WHERE '_rowid_' = '1';")

group是表名的变量。当它运行时,它运行没有错误,但没有删除任何内容。

2 个答案:

答案 0 :(得分:1)

MySQL DELETE statement支持ORDER BYLIMIT,因此您可以使用简单语句删除最早的日期行:

cursor.execute("DELETE FROM "+group+" ORDER BY `Date` LIMIT 1;")

答案 1 :(得分:0)

_row_id_周围的引号使其成为字符串。换句话说,查询将尝试删除字符串_rowid_等于字符串1的记录,该字符串永远不会为真,并且不会删除任何内容。

省略引号以将其识别为列名:

myid = 1
cursor.execute("DELETE FROM "+group+" WHERE _rowid_ = ?;", (myid, ))

另外,一般来说,不应该使用字符串插值或字符串格式来进行SQL查询。但在这种情况下,您正在参数化一个表名,它不能通过数据库驱动程序通过查询参数插入到查询中。