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 dariFROM 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.