首页 > 解决方案 > PostgreSQL 计算子查询中的行数

问题描述

我是 postgresql 的新手,我有下面的查询来产生下一个结果。我想在应用此限制之前计算行数

 FROM
  (SELECT *
   FROM places
   LIMIT 10
   OFFSET 0) places

SELECT places.place_id,
       username,
       title,
       description,
       visible,
       score,
       placelocation,
       category,
       price,
       accessibility,
       places.date,
       dangerous,
       url,
       image_id,
  (SELECT COUNT(*) AS likednumber
   FROM "favoritePlaces"
   WHERE "favoritePlaces".place_id=places.place_id), CASE
                                                         WHEN EXISTS
                                                                (SELECT *
                                                                 FROM "favoritePlaces"
                                                                 WHERE "favoritePlaces".place_id = places.place_id
                                                                   AND user_id='128'
                                                                 LIMIT 10) THEN 'true'
                                                         ELSE 'false'
                                                     END AS liked,
                                                     CASE
                                                         WHEN EXISTS
                                                                (SELECT *
                                                                 FROM "savedPlaces"
                                                                 WHERE "savedPlaces".place_id = places.place_id
                                                                   AND user_id='128'
                                                                 LIMIT 10) THEN 'true'
                                                         ELSE 'false'
                                                     END AS saved
FROM
  (SELECT *
   FROM places
   LIMIT 10
   OFFSET 0) places
LEFT JOIN images ON images.place_id = places.place_id
WHERE LOWER(description) SIMILAR TO LOWER(Concat('%', '', '%'))
  AND LOWER(placelocation) = LOWER(placelocation)
  AND category =category
  AND price =price
  AND dangerous =dangerous
  AND accessibility =accessibility
  OR LOWER(title) SIMILAR TO LOWER(Concat('%', '', '%'))
  AND visible=TRUE
  AND placelocation SIMILAR TO placelocation
  AND category =category
  AND price =price
  AND dangerous =dangerous
  AND accessibility =accessibility

桌子 根据这个答案,我想实现连接语句来计算行数:https ://stackoverflow.com/a/28888696/14131447 ,因为它似乎是更可靠的选择?

我怎么做?

标签: sqlpostgresql

解决方案


推荐阅读