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 radalah kependekan dariFROM domainregion AS r.AShanya 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.ddidhanya 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.