SQL Derby返回表的中间部分

SQL Derby返回表的中间部分,sql,derby,Sql,Derby,假设我有一张像这样的桌子 COL1 1 1 1 2 2 3 3 3 3 4 5 5 6 6 7 7 与其他一些对这个问题不重要的专栏。如果我想从4中返回除前两个值以外的所有值,我将如何处理derby 这是我想要的结果 COL1 3 3 3 3 4 5 5 6 6 谢谢你的帮助,我不是SQL的高手,但我正在努力:试试这个 SELECT t.* FROM mytab t INNER JOIN (SELECT MIN(COL1) AS VAL2 FROM mytab

假设我有一张像这样的桌子

COL1
1
1
1
2
2
3
3
3
3
4
5
5
6
6
7
7
与其他一些对这个问题不重要的专栏。如果我想从4中返回除前两个值以外的所有值,我将如何处理derby

这是我想要的结果

COL1
3
3
3
3
4
5
5
6
6
谢谢你的帮助,我不是SQL的高手,但我正在努力:

试试这个

SELECT t.*
FROM mytab t
INNER JOIN (SELECT MIN(COL1) AS VAL2
            FROM mytab
            WHERE COL1 NOT IN (SELECT MIN(COL1) FROM mytab)) x
ON t.COL1 > x.VAL2
工作示例
这是一个使用临时表的解决方案,它允许更大的灵活性和可读性,还允许您更好地调整参数

查询的ROWID部分是您的职位参考

CREATE TEMP TABLE mycol_order
    (COL1       INTEGER NOT NULL,
     TOTAL_COLS INTEGER NOT NULL,
    PRIMARY KEY (COL1));

INSERT INTO mycol_order
        (COL1,TOTAL_COLS)
SELECT DISTINCT t1.COL1,
        t2.total
FROM        mytab t1,
        (SELECT COUNT(DISTINCT COL1) AS total FROM mytab) t2
ORDER BY    1;


SELECT  t.*
FROM    mytab t
    INNER JOIN mycol_order co
        ON co.col1 = t.col1
        AND co.ROWID > 2
        AND co.ROWID < co.total_cols;
还更新了以下位置的工作示例:

的工作示例太棒了,谢谢。你能帮我找出如何在同一个查询中删除最后两个吗?PS:我上面的版本是针对SQLITE的。不知道Derby,但是如果它有一个ROW_NUMBER类型的函数,您可以使用它而不是使用临时表,但是查询的基本逻辑是相同的