【发布时间】:2018-05-16 11:15:41
【问题描述】:
给定一个简单的表lieu_horaire:
+ id_horaire (numeric)
+ id_lieu (numeric)
+ horaire (timestamp)
以下查询目前工作正常:
DELETE FROM lieu_horaire where id_horaire IN (
SELECT id_horaire "+
FROM (
SELECT id_horaire,
ROW_NUMBER() OVER (PARTITION BY id_lieu order by horaire desc) AS line_number
FROM lieu_horaire
) as sr
WHERE sr.line_number > 10);
但由于可扩展性的原因,我想用EXISTS '... WHERE EXISTS(... ' 替换IN 子句。但是对于存在,它不会删除正确的行,而是删除所有行,就好像'... WHERE sr.line_number...' 表达式不存在一样。
【问题讨论】:
-
你能解释一下你打算用这个查询来完成什么吗?
-
对于表中的每一个id_lieu,所有不属于最近十行的行都被删除。
标签: sql postgresql exists