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

PostgreSQL:Cara menyatukan 3 tabel yang diurutkan berdasarkan tanggal

Cara terbaik adalah membuat tabel baru yang berisi bidang umum dari tiga tabel lainnya dan menambahkan indeks pada bidang tanggal umum. Tiga tabel asli harus berisi kunci asing yang menghubungkan ke tabel umum. Dengan desain ini query menjadi sederhana:

SELECT *
FROM common_table
ORDER BY "date" DESC
LIMIT 100

Jika Anda juga memerlukan data dari tabel yang lebih spesifik, Anda dapat menggunakan LEFT JOINs untuk juga memilih data tersebut dalam kueri yang sama.

Jika Anda tidak dapat mengubah desain dan kinerja tidak menjadi masalah, maka Anda dapat menggunakan UNION ALL untuk menggabungkan hasil dari ketiga tabel sebelum menyortir:

SELECT * FROM table1
UNION ALL
SELECT * FROM table2
UNION ALL
SELECT * FROM table3
ORDER BY "date" DESC
LIMIT 100

Perhatikan bahwa di atas hanya akan berfungsi jika semua tabel memiliki struktur yang sama. Jika Anda memiliki bidang yang muncul di satu tabel tetapi tidak di tabel lain, maka Anda harus menghilangkannya dari SELECT atau mengembalikan NULL untuk kolom itu di tabel lain. Misalnya jika:

  • table1 memiliki kolom a , b , c dan date .
  • table2 memiliki kolom b , c dan date .
  • table3 memiliki kolom a , c dan date .

Kemudian gunakan ini:

SELECT a, b, c, "date"
FROM table1
UNION ALL
SELECT NULL AS a, b, c, "date"
FROM table2
UNION ALL
SELECT a, NULL as b, c, "date"
FROM table3
ORDER BY "date" DESC
LIMIT 100


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa perbedaan antara lokal C dan Posix di Postgres?

  2. Kelompokkan Menurut dan tambahkan kolom

  3. Melacak Ketersediaan Tinggi untuk PostgreSQL Dengan Detak Jantung

  4. postgresql:nilai kunci duplikat kesalahan melanggar batasan unik

  5. Mengonversi kueri SELECT DISTINCT ON dari Postgresql ke MySQL