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

Как да съединя само един ред в обединена таблица с postgres?

select distinct on (author.id)
    book.id, author.id, author.name, book.title as last_book
from
    author
    inner join
    book on book.author_id = author.id
order by author.id, book.id desc

Проверете distinct on

С distinct on е необходимо да включите "distinct" колоните в order by . Ако това не е редът, който искате, тогава трябва да обвиете заявката и да пренаредите

select 
    *
from (
    select distinct on (author.id)
        book.id, author.id, author.name, book.title as last_book
    from
        author
        inner join
        book on book.author_id = author.id
    order by author.id, book.id desc
) authors_with_first_book
order by authors_with_first_book.name

Друго решение е да използвате функция за прозорец, както в отговора на Ленарт. И друг много общ е този

select 
    book.id, author.id, author.name, book.title as last_book
from
    book
    inner join
    (
        select author.id as author_id, max(book.id) as book_id
        from
            author
            inner join
            book on author.id = book.author_id
        group by author.id
    ) s
    on s.book_id = book.id
    inner join
    author on book.author_id = author.id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка при създаването на пространствена база данни с помощта на EXTENSIONS

  2. Показване на изображение в Ireports с помощта на PostgreSql

  3. Услуга за база данни PostgreSQL

  4. Как да съхранявам дати с различни нива на точност в postgres?

  5. Добавете липсващ месец в резултат със стойности от предходния месец