PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Grupuj Postgres według zapytania

W przypadku zapytania rekurencyjnego możesz utworzyć ścieżkę hierarchiczną za pomocą tej sztuczki z ciągami uzupełnionymi zerami:Skrzypce SQL

with recursive comment_list(article_comment_id, parent_comment_id, comment, article_id, comment_depth, comment_path) AS (
    select c.article_comment_id, 
           c.parent_comment_id, 
           c.comment, 
           c.article_id, 
           c.comment_depth,
           substr(CAST(1000000000+c.article_comment_id as varchar(1000)),2)
    from test_comment c
    where article_id = 100
      and parent_comment_id = 0

  union all

    select c.article_comment_id, 
           c.parent_comment_id, 
           c.comment, 
           c.article_id, 
           c.comment_depth,
           cl.comment_path || substr(CAST(1000000000+c.article_comment_id as varchar(1000)),2)
    from test_comment c
       join comment_list cl on c.parent_comment_id = cl.article_comment_id
)
select cl.article_comment_id,
     cl.comment_path, 
     cl.parent_comment_id,
     cl.comment, 
     cl.article_id,
     cl.comment_depth
from comment_list cl
order by cl.comment_path, cl.article_comment_id, cl.comment_depth;

Usuń GROUP BY. Chcesz je „pogrupować” w celu wyświetlenia, co w rzeczywistości oznacza „ORDER BY”

select cl.parent_comment_id, 
     cl.article_comment_id,
     cl.comment, 
     cl.article_id,
     cl.comment_depth
from comment_list cl
order by cl.parent_comment_id, cl.article_comment_id, cl.comment_depth;

Możesz, ale nie musisz nadal potrzebować cl.root_id w kolejności według, więc może być

order by cl.root_id, cl.parent_comment_id, cl.article_comment_id, cl.comment_depth;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Slick 2.0 Ogólne operacje CRUD

  2. Jak ustawić pole bazy danych dopuszczające wartość null na NULL za pomocą typeorm?

  3. Wyodrębnij pierwszą numeryczną część pola

  4. Jak ustawić ścieżkę węzła dla nodejs (Ubuntu)

  5. Wspólna pamięć podręczna trafień w postgreSQL