0

我正在尝试根据我的数据库中按字母(升序或降序)顺序的姓氏字段从 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";

但这一条一直在两条同名的记录之间切换。

所以我需要找到一个技巧,无论姓氏是否相同,都能给我下一个(或上一个记录)。

4

2 回答 2

2

获取所有唯一名称的一种更简单的方法是使用SELECT DISTINCT

select distinct LastName from customerTable order by LastName asc

这将为您提供按字母顺序排列的所有唯一名称。

于 2013-03-12T10:41:33.743 回答
0

如果您坚持使用限制为 1 的查询,并且您仍然希望一个接一个地查询具有相同姓氏的所有记录,那么您可以继续使用第二种方法,即使它有点奇怪。在您查询第二条记录后,and CustomerId !=您将不得不查询下一条记录and CustomerId not in (firstId, secondId),依此类推。

但是,你真的不应该那样做。干净的方法是首先准备一个语句(也使用主机变量而不是字符串连接!)然后调用sqlite_step(),直到您检索到所有记录。

于 2013-03-12T10:43:09.250 回答