排序后如何从 sqlite 获取数据
How to get data from sqlite after sorting?
我再次需要你的帮助。我想从我的 sqlite 数据库中获取前 3 个值,并将它们存储在 QStrings 或 int 中。我的数据库有 1 个表,该表有 3 个列(名称、胜利、失败)。我想做这样的事情:
QString name1;
QSqlQuery qrry;
qrry.exec("SELECT name FROM users ORDER BY wins DESC WHERE rowid=1");
if (qrry.isActive())
{
while(qrry.next())
{
name1=qrry.value(0).toString();
}
}
如果我删除ORDER BY wins DESC
,我从 db 中获取名字。但我想先对它进行排序,ORDER BY
看起来不像是这样做的正确方法。你能帮帮我吗?
正如@hank所说,您的查询应该是:
qrry.exec("SELECT name FROM users ORDER BY wins DESC LIMIT 3");
LIMIT
子句只允许您在结果集中获取有限数量的结果。 在这种情况下,您将仅获得wins
列的 3 个最大值的name
值。
你写的WHERE
条款没有理由在那里。
编辑:
如何使用 LIMIT 读取这样的名称:"名称 1=db 中的第一个名字"、"名称 2=第二个名字"、"名称 3=第三个名字"?
如果你想在 3 个不同的变量中获取 3 个名称,你可以写这样的东西:
QString name1, name2, name3;
if (qrry.isActive())
{
int i = 0;
while(qrry.next())
{
switch(i)
{
case 0:
name1 = qrry.value(0).toString();
break;
case 1:
name2 = qrry.value(0).toString();
break;
case 2:
name3 = qrry.value(0).toString();
break;
}
i++;
}
}
这是一种方法,但您也可以将名称放在数组或向量中。在您的情况下,这并不重要,因为您只需要 3 个名字,但如果您想保留超过 10 或 50 个名字,处理数组或向量会更容易。
LIMIT 3
子句可确保结果集中最多有 3 个结果,并且在while(qrry.next())
循环中只会循环 3 次。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 查询SQLite数据库中的日期
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 带内存和隔离功能的SQLite
- 从C字符串中获取奇怪的字符串长度
- 如何使用 QSqlQuery 和 SQLite 从新插入的行中获取 ID
- 使用 qt 从 sqlite 数据库中获取数据
- 如何从Qt获取sqlite错误代码
- 排序后如何从 sqlite 获取数据
- 如何在C++的单类方法中获取SQLite记录
- 本地存储 QML,获取 sqlite 数据库位置
- 如何在返回SQLite中零项的SELECT操作中获取列名
- sqlite:如何获取所选列的列id
- 获取SQLite结果中的列数