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

Как да съедините две таблици, като една от тях няма първичен ключ и не е с еднаква дължина на символа

Опитайте това, за да сравните само първите 8 знака:

SELECT r.domainid, r.dombegin, r.domend, d.ddid 
FROM   domainregion r
JOIN   dyndomrun d ON r.domainid::varchar(8) = d.ddid 
ORDER  BY r.domainid, d.ddid, r.dombegin, r.domend;

Актьорският състав имплицитно отрязва завършващите знаци. ddid има само 8 знака за начало. Няма нужда да го обработвате също. Това постига същото:

JOIN   dyndomrun d ON left(r.domainid, 8) = d.ddid 

Имайте предвид обаче, че функцията за низ left() беше въведен само с PostgreSQL 9.1. В по-ранните версии можете да замените:

JOIN   dyndomrun d ON substr(r.domainid, 1, 8) = d.ddid

__

Основно обяснение за начинаещи:

  • Заявката използва JOIN . Прочетете повече за това в ръководството .

  • FROM domainregion r е съкращение от FROM domainregion AS r . AS е просто шум в този случай в PostgreSQL. Псевдонимът на таблицата прави заявката по-кратка и по-лесна за четене, но няма друго въздействие тук. Можете също да използвате псевдоними на таблици, за да включите една и съща таблица няколко пъти например.

  • Условието за присъединяване ON r.domainid::varchar(8) = d.ddid свързва само онези редове, където двата израза съвпадат точно. Прочетете отново за тези основи в ръководството (или всеки друг източник).

Това е проста заявка, няма много за обясняване тук.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да стартирам тестове в django, използвайки база данни с данни?

  2. Свържете се с отдалечен postgresql сървър на Amazon ec2

  3. Блокирайте ИЗБОР до получаване на резултати

  4. Как да персонализирате конфигурационния файл на официалното изображение на PostgreSQL Docker?

  5. Инструкции IF-THEN-ELSE в postgresql