如何获得具有相同姓氏的下一个记录

how to get next record with same last name

本文关键字:下一个 记录 何获得      更新时间:2023-10-16

我正试图从我的数据库中检索基于姓氏字段按字母顺序(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(),直到检索到所有记录。