我正在尝试查询数据库,但不包括表中的第一行和最后一行.这是一个示例表:
id | val
--------
1 1
2 9
3 3
4 1
5 2
6 6
7 4
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我首先要按顺序排序val,然后排除查询的第一行和最后一行.
id | val
--------
4 1
5 2
3 3
7 4
6 6
Run Code Online (Sandbox Code Playgroud)
这是我想要的结果集.注意第1行和第2行被排除,因为它们val分别具有最低和最高.
我已经考虑过LIMIT,TOP和其他一些东西,但无法得到我想要的结果.如果有一种方法可以做到这一点(甚至更好的是第一个/最后一个%而不是第一个/最后一个n),我无法弄明白.
你可以尝试这个伴侣:
SELECT * FROM numbers
WHERE id NOT IN (
SELECT id FROM numbers
WHERE val IN (
SELECT MAX(val) FROM numbers
) OR val IN (
SELECT MIN(val) FROM numbers
)
);
Run Code Online (Sandbox Code Playgroud)