PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Заявка за ORDER BY броя на редовете, върнати от друг SELECT

Начинът на Postgres да направите това:

SELECT *
FROM   users u
LEFT   JOIN (
   SELECT user_id, count(*) AS friends
   FROM   friends
   ) f USING (user_id)
ORDER  BY f.friends DESC NULLS LAST, user_id  -- as tiebreaker
  • Ключовата дума AS е просто шум за псевдоними на таблици. Но не го пропускайте от псевдоними на колони. Ръководството за „Пропускане на ключовата дума на AS“:

    В FROM елементи, както стандартният, така и PostgreSQL позволяват AS да бъде пропуснат пред псевдоним, който е нерезервирана ключова дума. Но това е непрактично за имената на изходни колони, поради синтактични неясноти .

    Удебелен акцент мой.

  • ISNULL() е персонализирано разширение на MySQL или SQL Server. Postgres използва стандартната SQL функция COALESCE() . Но тук не ви трябва нито едно. Използвайте NULLS LAST вместо това клауза, която е по-бърза и по-чиста. Вижте:

    • PostgreSQL сортиране по datetime asc, първо нула?
  • Множество потребители ще имат еднакъв брой приятели. Тези партньори ще бъдат сортирани произволно. Повторното изпълнение може да доведе до различен ред на сортиране, което обикновено не е желателно. Добавете още изрази към ORDER BY като тайбрек. В крайна сметка първичният ключ разрешава всички останали неясноти.

  • Ако двете таблици споделят едно и също име на колона user_id (както трябва) можете да използвате прекия път на синтаксиса USING в клаузата за присъединяване. Друга стандартна SQL функция. Страничен ефект за добре дошли:user_id е посочен само веднъж в изхода за SELECT * , за разлика от при присъединяване с ON . Много клиенти дори не биха приели дублиращи се имена на колони в изхода.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Импортиране на шейп файлове в postgresql в linux с помощта на pgadmin 4

  2. Как да превключвам бази данни в postgres?

  3. Как да настроите изходния формат на интервала в PostgreSQL

  4. Какъв е правилният начин за използване на модула node.js postgresql?

  5. Как да намерите името на ограничение в PostgreSQL