且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SQLite3 中的窗口函数

更新时间:2023-01-12 15:23:30

下面的查询可以让你接近你想要的:

The following query can get you close to what you want:

SELECT t1.*
FROM MY_TABLE t1
LEFT JOIN
(
    SELECT COLUMN_2, COLUMN_3, MIN(COLUMN_1) AS MIN_COLUMN_1
    FROM MY_TABLE
    GROUP BY COLUMN_2, COLUMN_3
) t2
    ON t1.COLUMN_2 = t2.COLUMN_2 AND
       t1.COLUMN_3 = t2.COLUMN_3 AND
       t1.COLUMN_1 = t2.MIN_COLUMN_1
WHERE
    t2.COLUMN_2 IS NULL;

此查询的工作原理是过滤掉每个 COLUMN_2COLUMN_3 组具有最小 COLUMN_1 值的记录.实际上,这对应的是排名而不是行号,但也许这对您来说是可以接受的.

This query works by filtering off records having the minimum COLUMN_1 value for each COLUMN_2, COLUMN_3 group. Actually, this corresponds to the rank rather than the row number, but maybe this is acceptable to you.