在sqlite中使用group by选择每个组中的第一行

Use*_*090 9 sqlite group-by

我有一个sqlite表.我想要获得每组的第一行.虽然之前有过同样的问题.我在sqlite中找不到解决方案.

我的表看起来像这样:

select * from geoview
MaxOfStatecountpercent | statepoolnumber | STATECODE
123                       1234              CA
123                       1234              FL
234                       1678              TX
234                       1678              MN
234                       0987              FL
234                       0987              CA
234                       9876              TX
Run Code Online (Sandbox Code Playgroud)

我想从每个statepoolnumber查询MaxOfStatecountpercent的第一个和第一个STATECODE.等效的访问sql查询是:

select first(MaxOfStatecountpercent), statepoolnumber, first(STATECODE) from geoview group by statepoolnumber;
Run Code Online (Sandbox Code Playgroud)

预计产量为:

First(MaxOfStatecountpercent) | statepoolnumber | First(STATECODE)
123                             1234              CA
234                             1678              TX
234                             0987              FL
234                             9876              TX
Run Code Online (Sandbox Code Playgroud)

我试过"限制1"但没有奏效.如何在sqlite中获得等效的查询?

Sti*_*eon 15

以下适用于您的样本表数据:

SELECT MaxOfStatecountpercent, statepoolnumber, STATECODE
FROM geoview
GROUP BY statepoolnumber
HAVING MIN(ROWID)
ORDER BY ROWID
Run Code Online (Sandbox Code Playgroud)

这假定,根据您所需的输入,您希望每个statepoolnumber组的"first"状态为第一个记录(而不是按字母顺序排列的"first").

  • 使用“HAVING ROWID = MIN(ROWID)”代替“HAVING MIN(ROWID)”。 (4认同)