GROUP BY 子句中不允许使用聚合函数(代码 1)

问题描述 投票:0回答:2

我在 Android 4.4.2 版本设备中遇到了以下 Sqlite 查询的奇怪问题。提前致谢

表结构如下

CREATE TABLE responsemaster (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    formid integer,
    proposerid text,
    fieldid integer,
    response text,
    remarks text,
    listId integer,
    isMarked integer
)

给出错误的查询是

SELECT id as id, formid as formid, proposerid as proposerid, MIN(fieldid) fieldid, response as response, remarks as remarks, listId as listId, isMarked as isMarked
FROM responsemaster
WHERE formid = 40066 AND proposerid = '7ca6533a-c5f0-43e2-9980-83f9ae2c7370201802230113550000'
GROUP BY fieldid

我遇到的异常如下

android.database.sqlite.SQLiteException: aggregate functions are not allowed in the GROUP BY clause (code 1):, 
while compiling: SELECT id as id, formid as formid, proposerid as proposerid,  **MIN(CAST(fieldid AS INTEGER)) AS fieldid**, response as response, remarks as remarks, listId as listId, isMarked as isMarked FROM responsemaster WHERE formid = 40066 AND proposerid = '7ca6533a-c5f0-43e2-9980-83f9ae2c7370201802230113550000'  GROUP BY fieldid

上述查询将在 SQLite 浏览器和高于 Android 4.4.2 版本的设备中成功执行。请任何人帮助我如何修复该错误?

android sqlite
2个回答
0
投票

尝试这个查询,它可能会取代聚合函数

SELECT id as id, formid as formid, proposerid as proposerid, fieldid as 
       fieldid, response as response, remarks as remarks, listId as listId, 
       isMarked as isMarked FROM responsemaster WHERE formid = 40066 AND proposerid = '7ca6533a-c5f0-43e2-9980-83f9ae2c7370201802230113550000' 
       GROUP BY fieldid HAVING fieldid = MIN(fieldid)

-1
投票
© www.soinside.com 2019 - 2024. All rights reserved.