Я пытаюсь получить следующую или предыдущую запись из sqlite на основе поля последнего имени в алфавитном порядке (asc или desc) из моей базы данных. Однако последнее имя не является уникальным полем, а также я могу получить только одну запись (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";
Но это один держит листать между 2 записей с одинаковыми фамилиями.
Поэтому мне нужно найти трюк, который дал бы мне следующую (или предыдущую запись), независимо от того, когда фамилия такая же или нет.
Возможно, мне здесь не хватает смысла, но почему бы не использовать 'SELECT DISTINCT'? – NPE
Я не знаком с отдельными, мне нужно проверить, что один из –
, отдельный параметр - это сортировка дубликатов, это не то, что я хочу, я все равно хочу, чтобы каждая запись извлекалась из базы данных. Но поскольку я только извлекаю одну запись в то время, мне нужно получить следующую запись с предыдущей записью в качестве отправной точки. Итак, если фамилия такая же, мне нужно получить ее или перейти к следующей фамилии, если она отличается от предыдущей фамилии. В моей программе я использую стрелку вверх и вниз для просмотра клиентов, хранящихся в базе данных, на основе имени в алфавитном порядке. –