Воссоздание сценарий ...
CREATE TABLE tasks
(
lat integer,
lng integer,
id integer
);
INSERT INTO tasks (lat, lng, id) VALUES (12, 34, 123);
INSERT INTO tasks (lat, lng, id) VALUES (12, 34, 143);
INSERT INTO tasks (lat, lng, id) VALUES (12, 35, 147);
INSERT INTO tasks (lat, lng, id) VALUES (11, 35, 412);
и выбрав пункт с запросом указанного (имена столбцов записные таблица соответствия в примере данных)
SELECT lat, lng, COUNT(*) count FROM tasks
GROUP BY lat, lng HAVING count > 1
дает следующее:
lat lng count
12 34 2
... что согласуется с тем, что вы ожидаете, за исключением «и для других я должен получить считаются 1». Для того, чтобы обратиться к этому, и получить все строки, удалить HAVING count > 1
, получая
lat lng count
11 35 1
12 34 2
12 35 1
Если у вас возникли проблемы с выполнением SQL с помощью SQLiteDatabase.query()
, а затем разместить пример кода с выходом (или неудачи), так что проблему можно диагностировать.
Fiddling with this query
Что касается кода в Android, вот пример, который работает с использованием rawQuery. Это, похоже, поддерживает предложение HAVING.
SQLiteDatabase db = SQLiteDatabase.create(null);
db = SQLiteDatabase.openDatabase("/data/data/com.mycompany.myapp/databases/myDB.db", null, SQLiteDatabase.OPEN_READONLY, null);
Cursor cursor = db.rawQuery("SELECT lat, lng, COUNT(*) count FROM tasks GROUP BY lat, lng HAVING count > 1 ", new String [] {});
// Iterate through cursor
if(cursor.moveToFirst())
{
do
{
Integer lat = cursor.getInt(0);
Integer lng = cursor.getInt(1);
Integer count = cursor.getInt(2);
// Do something here with lat, lng, count
}
while(cursor.moveToNext());
}
Там нет обработки ошибок, и я предложил бы использовать класс DB Utilities, который расширяет SQLiteOpenHelper, но это должно заставить вас идти.
'Я хочу получить только количество заданий с уникальными значениями long long. -> Если вы хотите получить количество задач, почему вы выбираете значения широты и долготы? – iRuth
с такой же широтой и долготой, что может быть несколько задач. поэтому я хочу получить уникальный lat lng и иметь соответствующие задачи с ним. –
@Android_Rocks Я обновил свой ответ, чтобы включить образец кода. http://stackoverflow.com/a/28713682/3063884 – CJBS