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