如何获得具有相同姓氏的下一个记录
how to get next record with same last name
我正试图从我的数据库中检索基于姓氏字段按字母顺序(asc或desc)从sqlite的下一个或上一个记录。但是,姓氏不是唯一的字段,而且我只能为每个查询检索一条记录(LIMIT 1),因为我使用sqlite的回调机制,我不想缓冲从查询返回的每个可能结果的结果(除非没有其他选择)。我还有一个名为customerId的唯一字段(即行id)。
这是我当前使用的语句:
stream << "select * from customerTable where LastName >= '" << customerLastName << "' order by LastName asc limit 1";
我尝试了一些其他语句,如:
stream << "select * from customerTable where LastName >= '" << customerLastName << "' and CustomerId != " << customerId << " order by LastName asc limit 1";
但是这一个一直在两个相同姓氏的记录之间切换。
所以我需要找到一个技巧,无论姓氏是否相同,都会给我下一个(或上一个)记录。
获得所有唯一名称的更简单的方法是使用SELECT DISTINCT
:
select distinct LastName from customerTable order by LastName asc
它会按字母顺序给你所有唯一的名字
如果您坚持使用限制1的查询,并且您仍然希望查询具有相同姓氏的所有记录一个接一个,那么您可以继续使用第二种方法,尽管它有点奇怪。在使用and CustomerId !=
查询第二条记录后,您必须使用and CustomerId not in (firstId, secondId)
查询下一条记录,以此类推。
然而,你真的不应该那样做。干净的方法是首先准备一个语句(也使用主机变量而不是字符串连接!),然后调用sqlite_step()
,直到检索到所有记录。
相关文章:
- 重新定位图像时如何前进到下一个内存块
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- 用于在 C++ 中使用 while 循环查找下一个素数的简单函数
- CIN 仅在输入非数字值时跳过下一个 CIN
- 查找最小的下一个更大的元素
- 转到基于范围的 for 循环中的下一个迭代器
- 如何检查流中文件的下一个单词是否为 alpha?
- 如何打印下一个字母直到 Z 并继续到 A?
- 在使用堆栈为下一个最大数字编写代码时面临 SIGSEGV(分段错误)
- 使用一个内存集数组和单个堆栈在 O(n) 中查找数组的下一个更大元素
- 有没有一种标准方法可以在C++中获取第 n 个"下一个"浮点值
- 下一个云桌面客户端构建过程
- C++自定义流操纵器,用于更改流上的下一个字符串
- 链表指针赋值为什么我们不能直接将尾巴分配给 temp 而不是尾巴>尾巴下一个
- 下一个排列定义
- 查找下一个具有真值C++的数组索引
- 如何比较文件中包含的下一个字符
- 检查IP是否在其他IP网络范围内,并查找下一个可用IP
- 当我使用c++生成器时,如何在输入完成后自动跳转到下一个"TEdit"
- 如何获得具有相同姓氏的下一个记录