在 psql 中使用 Asc 偏移量和 desc

Using Asc offset and desc in psql

这段代码产生了这个

SELECT "End_Date"+5                                                   
                FROM exhibits e, rooms r, PlaceOfExhibition p
                WHERE "End_Date">CURRENT_DATE+5 AND r."Minimum" >= 7 and
r."Maximum" <= 16 and p."Location"=r."Name" and e."Name" = p."Exhibition" ORDER
BY "End_Date" desc;
  ?column?  
------------
 2017-01-15
 2016-12-20
 2016-10-22
 2016-09-20
(2 rows)

我需要 2016-12-20 日期(第二大日期),我并不总是需要第二大日期,尽管这取决于房间的计数(如果房间查询 returns 4 然后我需要第四大的) 我需要从子查询中获取它 这是我的子查询

SELECT "End_Date"+5                                                   
                FROM exhibits e, rooms r, PlaceOfExhibition p
                WHERE "End_Date">CURRENT_DATE+5 AND r."Minimum" >= 7 and
r."Maximum" <= 16 and p."Location"=r."Name" and e."Name" = p."Exhibition" ORDER
BY "End_Date" ASC OFFSET (Select Count("Name")-1 FROM Rooms Where "Minimum">=7
and "Maximum"<=16) LIMIT 1 ;

哪个returns这个

2016-10-22

所以我的查询得到的是倒数第二个日期,但是方向错误,它得到的是第二小而不是第二大

您可以这样做来重新排序结果:

SELECT * FROM
(
    SELECT "End_Date"+5                                                   
    FROM exhibits e, rooms r, PlaceOfExhibition p
    WHERE "End_Date">CURRENT_DATE+5
    AND r."Minimum" >= 7
    AND r."Maximum" <= 16
    AND p."Location"=r."Name"
    AND e."Name" = p."Exhibition"
    ORDER BY "End_Date" desc
) x
ORDER BY 1 asc;
SELECT "End_Date"+5                                                   
                FROM exhibits e, rooms r, PlaceOfExhibition p
                WHERE "End_Date">CURRENT_DATE+5 AND r."Minimum" >= 7 and
r."Maximum" <= 16 and p."Location"=r."Name" and e."Name" = p."Exhibition" ORDER
BY "End_Date" DESC OFFSET (Select Count("Name")-1 FROM Rooms Where "Minimum">=7
and "Maximum"<=16) LIMIT 1 ;