假设我有一个看起来像这样的表
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,但我正在尝试:)
答案 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
的工作示例