从大到小排序 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
我正在尝试制作一个 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