MySQL条件排序需求:Python代码需实现height相等时优先显示width大的记录
解决MySQL排序:Height相等时优先显示Width更大的记录
嘿,你的需求其实只需要调整SQL语句里的ORDER BY子句就能轻松实现啦!
原代码里的SELECT * FROM data ORDER BY Height只会按Height升序排列,但没处理Height相等时的排序规则。要实现当Height值相等时,把Width更大的记录排在前面,你需要给ORDER BY添加第二个排序条件,并且对Width使用降序(DESC)排序。
修改后的完整代码如下:
import mysql.connector mydb = mysql.connector.connect( host="localhost", user="root", password="", database="data" ) mycursor = mydb.cursor() # 调整ORDER BY子句:先按Height排序,Height相同时按Width降序排列 sql = "SELECT * FROM data ORDER BY Height, Width DESC" mycursor.execute(sql) myresult = mycursor.fetchall() for x in myresult: print(x[0],x[1],x[2],'\n')
简单拆解一下逻辑:
ORDER BY Height:首先按照Height列的默认升序(从小到大)排列所有记录, Width DESC:当两条记录的Height值完全相等时,就切换到Width列的降序(从大到小)排序,这样Width数值更大的记录会被优先展示
如果你的需求是Height本身要按降序排列(比如先展示高的记录),只需要给Height也加上DESC即可,比如ORDER BY Height DESC, Width DESC,这样会先按Height从大到小排序,同Height的记录再按Width从大到小排列。
内容的提问来源于stack exchange,提问作者Sina M
相关产品推荐
相关产品推荐

