我正在尝试显示在python中创建的基本算术测试的结果,测试重复三次并收集三个分数,这工作正常,但是当我尝试以降序中的三个最高分显示这些我显示错误信息。如下。
Traceback (most recent call last):
File "F:\Adair,Rowan CA2\Task 3\Code\DisplayTablesScore.py", line 4, in <module>
cursor.execute("SELECT * FROM class1 ORDER BY (score1,score2,score3) DESC")
sqlite3.OperationalError: near ",": syntax error
然而,当它由其中一列组织时,例如只有得分1它工作正常。 我无法弄清楚如何修复的代码如下。
import sqlite3
connection = sqlite3.connect("class1.db")
cursor = connection.cursor()
cursor.execute("SELECT * FROM class1 ORDER BY (score1,score2,score3) DESC")
print("Class 1:")
result = cursor.fetchall()
for r in result:
print(r)
对此的任何帮助都会受到极大的赞赏,我也在努力确定平均值。
答案 0 :(得分:1)
首先ORDER BY的语法错误,应该是
SELECT * FROM class1 ORDER BY score1 DESC, score2 DESC, score3 DESC;
根据Max of multiple columns的回复,如果您需要按列的高分排序,则需要计算它们
SELECT score1, score2, score3,
CASE
WHEN score1 >= score2 AND score1 >= score3 THEN score1
WHEN score2 >= score1 AND score2 >= score3 THEN score2
WHEN score3 >= score1 AND score3 >= score2 THEN score3
ELSE score1
END AS high_score FROM class1 ORDER BY high_score DESC;
答案 1 :(得分:0)
SQL子句ORDER BY
在声明其参数时不会使用括号。换句话说,执行ORDER BY (...)
确实是无效的语法。
要声明要排序的多个列,只需省略括号:
cursor.execute("SELECT * FROM class1 ORDER BY score1 DESC, score2 DESC ,score3 DESC")
This example应涵盖基础知识。请注意,每列可能需要自己的descension / ascension关键字。