SQL Derby返回表的中间位置

时间:2013-11-21 19:47:50

标签: 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,但我正在尝试:)

2 个答案:

答案 0 :(得分:1)

试试这个......

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

工作实例 http://www.datagloop.com/?USERNAME=DATAGLOOP/SO_DERBY&ACTION=LOGIN

答案 1 :(得分:0)

这是一个使用临时表的解决方案,该表允许更大的灵活性,可读性,还允许您更好地调整参数。

查询的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;

还更新了工作示例 http://www.datagloop.com/?USERNAME=DATAGLOOP/SO_DERBY&ACTION=LOGIN

的工作示例