我正在创建一个票务系统,我想填充一个表供人们查看所有打开的票证。我希望它们按优先顺序排序,从关键 - >高 - >中 - >低。
我正在重复使用我之前制作的测试数据库程序中的代码,该程序通过"姓氏对表中的条目进行排序。"
while(currentRow < rows){
qry.prepare("SELECT * FROM users ORDER BY lastname LIMIT :f1, :f2");
qry.bindValue(":f1", currentRow);
qry.bindValue(":f2", currentRow+1);
qry.exec();
qry.next();
currentCol = 0;
//this loop will populate all columns in the current row
while(currentCol < ui->table->columnCount()){
QTableWidgetItem *setdes = new QTableWidgetItem;
setdes->setText(qry.value(currentCol).toString());
ui->table->setItem(count, currentCol-1, setdes);
currentCol++;
}
currentRow++;
}
显然,我无法将查询从lastname
更改为priority
,因为它们会按字母顺序排序,而不是我希望它们排序的顺序。有没有办法我可以执行一个SQL查询来按照我上面提供的顺序对它们进行排序,或者我是否需要填充表格然后自己对它进行排序?
答案 0 :(得分:2)
您可以使用CASE WHEN ... THEN
构造将字符串映射到数值以进行排序,例如
... ORDER BY CASE
WHEN priority='critical' THEN 1
WHEN priority='high' THEN 2
WHEN priority='medium' THEN 3
WHEN priority='low' THEN 4
ELSE 5
END