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类型的函数,您可以使用它而不是使用临时表,但是查询的基本逻辑是相同的