在 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 ;
这段代码产生了这个
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 ;