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

Bagaimana cara menggabungkan dua tabel dengan salah satunya tidak memiliki kunci utama dan panjang karakter yang tidak sama?

Coba ini untuk membandingkan 8 karakter pertama saja:

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;

Pemeran secara implisit memangkas karakter tambahan. ddid hanya memiliki 8 karakter untuk memulai. Tidak perlu diproses juga. Ini mencapai hal yang sama:

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

Namun, perhatikan bahwa fungsi string left() hanya diperkenalkan dengan PostgreSQL 9.1. Di versi sebelumnya Anda dapat mengganti:

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

__

Penjelasan dasar untuk pemula:

  • Kueri menggunakan JOIN . Baca selengkapnya tentang itu di manual .

  • FROM domainregion r adalah kependekan dari FROM domainregion AS r . AS hanya kebisingan dalam hal ini di PostgreSQL. Alias ​​tabel membuat kueri lebih pendek dan lebih mudah dibaca tetapi tidak memiliki dampak lain di sini. Anda juga dapat menggunakan alias tabel untuk memasukkan tabel yang sama beberapa kali misalnya.

  • Kondisi join ON r.domainid::varchar(8) = d.ddid hanya menggabungkan baris-baris itu bersama-sama di mana dua ekspresi sama persis. Sekali lagi, baca tentang dasar-dasar dalam manual (atau sumber lainnya).

Ini pertanyaan sederhana, tidak banyak yang bisa dijelaskan di sini.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan PostgreSQL:tidak dapat menerima data dari klien:Operasi dicoba pada sesuatu yang bukan soket

  2. Gambaran Umum Replikasi Logis di PostgreSQL

  3. UPDATE .. BATAS 1 dengan SqlAlchemy dan PostgreSQL

  4. Apakah ada fungsi hash di PostgreSQL?

  5. Pembuatan Entitas untuk Tabel Tunggal