PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menggabungkan hanya satu baris dalam tabel yang digabungkan dengan 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

Periksa distinct on

Dengan perbedaan, kolom "berbeda" harus disertakan dalam order by . Jika itu bukan urutan yang Anda inginkan maka Anda perlu membungkus kueri dan menyusun ulang

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

Solusi lain adalah dengan menggunakan fungsi jendela seperti pada jawaban Lennart. Dan satu lagi yang sangat umum adalah ini

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. Saat memanggil DB::pilih mengapa saya mendapatkan pesan Sambungan telah disetel ulang?

  2. Temukan nama host dan port menggunakan perintah PSQL

  3. Kesalahan lokal Postgres

  4. Masalah dengan nama kolom berisi titik dua di PostgreSQL

  5. kesalahan pernyataan sql:kolom .. tidak ada