Опитайте това, за да сравните само първите 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свързва само онези редове, където двата израза съвпадат точно. Прочетете отново за тези основи в ръководството (или всеки друг източник).
Това е проста заявка, няма много за обясняване тук.