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

PostgreSQL:Как да обединим 3 таблици, сортирани по дата

Най-добрият начин е да създадете нова таблица, съдържаща общите полета от другите три таблици и да добавите индекс към общото поле за дата. Оригиналните три таблици трябва да съдържат външен ключ, свързващ общата таблица. С този дизайн заявката става проста:

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

Ако се нуждаете и от данни от по-конкретните таблици, можете да използвате LEFT JOIN, за да изберете и тези данни в същата заявка.

Ако не можете да промените дизайна си и производителността не е проблем, тогава можете да използвате UNION ALL, за да комбинирате резултатите от трите таблици преди сортиране:

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

Имайте предвид, че горното ще работи само ако всички таблици имат една и съща структура. Ако имате полета, които се срещат в една таблица, но не и в други, тогава трябва да ги пропуснете от SELECT или иначе да върнете NULL за тази колона в другите таблици. Например ако:

  • table1 има колони a , b , c и date .
  • table2 има колони b , c и date .
  • table3 има колони a , c и date .

След това използвайте това:

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. Съвети за настройка на производителността на PostgreSQL

  2. Как да инсталирате PostgreSQL на macOS

  3. Грешка:INTO е указано повече от веднъж на или близо до INTO

  4. Персонализирана агрегатна функция

  5. Премахване на ключалки без pid в postgres