我的代码看起来像这样(模式),因为它非常庞大:
something AS ( SELECT DISTINCT ON (x1,x2,x3,x4) ... ),
something2 AS (xx.*, ... FROM something xx LEFT JOIN ...),
something3 AS (xx.*, ... FROM something2 xx LEFT JOIN ...)
SELECT ... FROM something3
所以想象一下这种情况:在使用DISTINCT ON (x1,x2,x3,x4something
)之后
select * from something
(忽略something2 and something3
这里):我得到 1700 个结果。
但问题是这不是我的预期结果(还),因为我需要使用更多的 CTE 来 leftjoin 一些信息
所以当我有相同的DISTINCT ONsomething
并且我做
select * from something3
(这是应返回 1700 行的最终预期结果)
我突然得到了 4000 个结果,其中包含我之前想要区分的值something
。
好像我丢失了DISTINCT
Ive type in something
,因为当我输入相同的语法时:
DISTINCT ON (x1,x2,x3,x4) ...
在所有三个中something's
,我得到 1700 个结果 - 但这并不是我真正想要的。
时间对我来说很重要。
有人可以帮助我解决问题并更好地理解这里的问题吗?