我写了一个python代码,我想按身高对员工进行排序,如果身高相同,则按体重对他们进行排序 因为我从 MySQL 数据库中调用员工的名字和他们的特性,所以我很难编码......
代码:
import mysql.connector
cnx = mysql.connector.connect(user='root', password='123', host='127.0.0.1', database='company_workers')
cursor = cnx.cursor()
query = "SELECT * FROM workers;"
cursor.execute(query)
for (name, height, weight) in sorted(cursor, key = lambda height: height > height):
print("%s %s %s" % (name, height, weight))
输出:
Jack 75 180
Charlie 90 190
Chris 75 175
我什至使用了带有 lambda func 的排序方法(也许我写错了...) 如果你能告诉我在高度相同后如何根据他们的体重进行排序,我会很高兴......
期望输出:
Charlie 90 190
Jack 75 180
Chris 75 175
答案 0 :(得分:1)
只需更改您的 sql 查询并按顺序返回:
import mysql.connector
cnx = mysql.connector.connect(user='root', password='123', host='127.0.0.1', database='company_workers')
cursor = cnx.cursor()
query = "SELECT * FROM workers order by height desc, weight desc, name;"
cursor.execute(query)
data = cursor.fetchall()
在数据中,您将获得有序信息
答案 1 :(得分:1)
您可以通过mysql查询本身对数据进行排序
select * from workers order by height desc, weight desc;
这将首先按高度对行进行排序,如果两行或更多行具有相同的高度,则将按重量对它们进行排序
答案 2 :(得分:0)
让mysql为你做:
SELECT height,weight,<other fields> FROM workers ORDER BY height, weight;