从大到小排序 SQLite3 数据库

Ordering SQLite3 Database greatest to least

我正在尝试制作一个 discord 命令,该命令获取数据库中从大到小的列并获取前 10 个结果,它可以工作但不能按从大到小的顺序打印。

cursor.execute(f"SELECT bal, user_id FROM moneyTable WHERE guild_id = {ctx.guild.id} ORDER BY bal DESC LIMIT 10")
result = cursor.fetchall()
print(result)

我的结果是

[('635', '673990922945560599'), ('400', '317652126471815168'), ('200', '323669516489850882'), ('15000', '539305505445642250'), ('1260', '448573840893804614'), ('1000', '531664615755612161'), ('100', '419300570235666432'), ('100', '412106756349624331'), ('100', '408674114958524417'), ('100', '358517557772156929')]

好像bal的数据类型是TEXT所以按字母顺序排列。
您必须通过添加 0 或显式将 bal 转换为整数:

SELECT bal, user_id 
FROM moneyTable 
WHERE guild_id = {ctx.guild.id} 
ORDER BY bal + 0 DESC LIMIT 10

或:

SELECT bal, user_id 
FROM moneyTable 
WHERE guild_id = {ctx.guild.id} 
ORDER BY CAST(bal AS INTEGER) DESC LIMIT 10