【发布时间】:2013-11-21 19:47:49
【问题描述】:
假设我有一张看起来像这样的表
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 方面不是最好的,但我正在尝试:)
【问题讨论】:
假设我有一张看起来像这样的表
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
工作示例 http://www.datagloop.com/?USERNAME=DATAGLOOP/SO_DERBY&ACTION=LOGIN
【讨论】:
这是一个使用临时表的解决方案,它具有更大的灵活性和可读性,还可以让您更好地调整参数。
查询的 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的工作示例
【讨论】: