Android SQLiteDatabase.query()按/have分组,但有多个列不工作

Android SQLiteDatabase.query()按/have分组,但有多个列不工作,android,sqlite,having,Android,Sqlite,Having,在Android中,我有一个存储纬度和经度值的表,以及与每行关联的相应id。当我使用查询时 SELECT latitude, longitude, COUNT(*) count FROM tasks GROUP BY latitude, longitude HAVING count > 1 它给我的是只按纬度分组,而不是按经度分组。我怎样才能做到这一点?我只想获得具有唯一lat long值的任务数。使用Android SQLite有什么方法可以实现这一点吗?例如,使用表中的此数据 lat

在Android中,我有一个存储纬度和经度值的表,以及与每行关联的相应id。当我使用查询时

SELECT latitude, longitude, COUNT(*) count
FROM tasks
GROUP BY latitude, longitude
HAVING count > 1
它给我的是只按纬度分组,而不是按经度分组。我怎样才能做到这一点?我只想获得具有唯一lat long值的任务数。使用Android SQLite有什么方法可以实现这一点吗?例如,使用表中的此数据

lat lng id 12 34 123 12 34 143 12 35 147 11 35 412 lat液化天然气id 12 34 123 12 34 143 12 35 147 11 35 412 。。。对于12 lat 34 lng,我必须获得123、143,即计为2
对于其他人,我应该将计数设为1,这似乎是SQL中的一个问题。为列创建
别名时,可能应该使用“AS”关键字

我认为您的SQL语句应该是:

SELECT latitude, longitude, COUNT(*) AS count FROM tasks GROUP BY latitude, longitude HAVING count > 1


这似乎是SQL中的一个问题。为列创建
别名时,可能应该使用“AS”关键字

我认为您的SQL语句应该是:

SELECT latitude, longitude, COUNT(*) AS count FROM tasks GROUP BY latitude, longitude HAVING count > 1


这似乎是SQL中的一个问题。为列创建
别名时,可能应该使用“AS”关键字

我认为您的SQL语句应该是:

SELECT latitude, longitude, COUNT(*) AS count FROM tasks GROUP BY latitude, longitude HAVING count > 1


这似乎是SQL中的一个问题。为列创建
别名时,可能应该使用“AS”关键字

我认为您的SQL语句应该是:

SELECT latitude, longitude, COUNT(*) AS count FROM tasks GROUP BY latitude, longitude HAVING count > 1


正在重新创建场景

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);
并使用指定的查询进行选择(注意数据示例中的列名与表匹配)

提供以下信息:

lat   lng   count
12    34    2
…这与您的预期一致,除了“对于其他人,我应计为1”。要解决此问题并获取所有行,请删除
HAVING count>1
,从而

lat   lng   count
11    35    1
12    34    2
12    35    1
如果您在使用
SQLiteDatabase.query()
执行SQL时遇到问题,请发布带有输出(或失败)的代码示例,以便诊断问题

至于Android中的代码,这里有一个使用的示例。这似乎支持该条款


没有错误处理,我建议使用一个扩展的DB Utilities类,但这应该可以让您继续。

重新创建场景

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);
并使用指定的查询进行选择(注意数据示例中的列名与表匹配)

提供以下信息:

lat   lng   count
12    34    2
…这与您的预期一致,除了“对于其他人,我应计为1”。要解决此问题并获取所有行,请删除
HAVING count>1
,从而

lat   lng   count
11    35    1
12    34    2
12    35    1
如果您在使用
SQLiteDatabase.query()
执行SQL时遇到问题,请发布带有输出(或失败)的代码示例,以便诊断问题

至于Android中的代码,这里有一个使用的示例。这似乎支持该条款


没有错误处理,我建议使用一个扩展的DB Utilities类,但这应该可以让您继续。

重新创建场景

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);
并使用指定的查询进行选择(注意数据示例中的列名与表匹配)

提供以下信息:

lat   lng   count
12    34    2
…这与您的预期一致,除了“对于其他人,我应计为1”。要解决此问题并获取所有行,请删除
HAVING count>1
,从而

lat   lng   count
11    35    1
12    34    2
12    35    1
如果您在使用
SQLiteDatabase.query()
执行SQL时遇到问题,请发布带有输出(或失败)的代码示例,以便诊断问题

至于Android中的代码,这里有一个使用的示例。这似乎支持该条款


没有错误处理,我建议使用一个扩展的DB Utilities类,但这应该可以让您继续。

重新创建场景

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);
并使用指定的查询进行选择(注意数据示例中的列名与表匹配)

提供以下信息:

lat   lng   count
12    34    2
…这与您的预期一致,除了“对于其他人,我应计为1”。要解决此问题并获取所有行,请删除
HAVING count>1
,从而

lat   lng   count
11    35    1
12    34    2
12    35    1
如果您在使用
SQLiteDatabase.query()
执行SQL时遇到问题,请发布带有输出(或失败)的代码示例,以便诊断问题

至于Android中的代码,这里有一个使用的示例。这似乎支持该条款


没有错误处理,我建议使用扩展的DB Utilities类,但这应该可以让您继续。

我只想获得具有唯一lat long值的任务计数
-->如果您想获得任务计数,为什么还要选择纬度和经度值?在同一纬度和经度上,我可能有多个任务。所以我想得到唯一的lat lng,并有相应的TaskID。@Android\u我已经更新了我的答案,包含了一个代码示例<代码>我只想获取具有唯一lat long值的任务计数-->如果要获取任务计数,为什么还要选择纬度和经度值?在同一纬度和经度上,我可能会找到多个任务。所以我想得到唯一的lat lng,并有相应的TaskID。@Android\u我已经更新了我的答案,包含了一个代码示例<代码>我只想获取具有唯一lat long值的任务计数-->如果要获取任务计数,为什么还要选择纬度和经度值?在同一纬度和经度上,我可能会找到多个任务。所以我想得到唯一的lat lng,并有相应的TaskID。@Android\u我已经更新了我的答案,包含了一个代码示例<代码>我只想获取具有唯一lat long值的任务计数
-->如果要获取任务计数,为什么还要选择纬度和经度值?在相同的纬度和经度下,我可能有多个任务