我很好奇编写查询的最佳方式。
我有一张 ID 和值表。我想在 ID 较低的所有行中排除 val 小于 val 的行。
我正在尝试在 id-1 上将这个表连接到它自己,但是这并不总是有效。
一些示例数据
CREATE TEMP TABLE new_temp_table (
id integer,
val integer
);
INSERT INTO new_temp_table (id, val)
VALUES (0, 300),
(1, 150),
(2, 100),
(3, 200),
(4, 320),
(5, 120),
(6, 220),
(7, 340);
我想要以下输出。
--- id --- val
--- 0 --- 300
--- 4 --- 320
--- 7 --- 340
如有任何帮助/指导,我们将不胜感激。
最佳答案
不存在:
select t.* from new_temp_table t
where not exists (
select 1 from new_temp_table
where id < t.id and val > t.val
)
参见 demo .
结果:
| id | val |
| --- | --- |
| 0 | 300 |
| 4 | 320 |
| 7 | 340 |
关于SQL - 选择列值大于它之前的行的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56654522/