Hãy thử điều này để so sánh chỉ 8 ký tự đầu tiên:
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;
Dàn diễn viên cắt xén các ký tự theo sau một cách ngầm định. ddid
chỉ có 8 ký tự để bắt đầu. Không cần phải xử lý nó, quá. Điều này đạt được tương tự:
JOIN dyndomrun d ON left(r.domainid, 8) = d.ddid
Tuy nhiên, hãy lưu ý rằng hàm chuỗi left()
chỉ được giới thiệu với PostgreSQL 9.1. Trong các phiên bản cũ hơn, bạn có thể thay thế:
JOIN dyndomrun d ON substr(r.domainid, 1, 8) = d.ddid
__
Giải thích cơ bản cho người mới bắt đầu:
-
Truy vấn sử dụng
JOIN
. Đọc thêm về điều đó trong sách hướng dẫn . -
FROM domainregion r
là viết tắt củaFROM domainregion AS r
.AS
chỉ là tiếng ồn trong trường hợp này trong PostgreSQL. Bí danh bảng làm cho truy vấn ngắn hơn và dễ đọc hơn nhưng không có tác động nào khác ở đây. Ví dụ, bạn cũng có thể sử dụng bí danh bảng để bao gồm cùng một bảng nhiều lần. -
Điều kiện tham gia
ON r.domainid::varchar(8) = d.ddid
chỉ nối các hàng đó với nhau khi hai biểu thức khớp chính xác. Một lần nữa, hãy đọc về những điều cơ bản trong sách hướng dẫn này (hoặc bất kỳ nguồn nào khác).
Đây là một truy vấn đơn giản, không cần giải thích nhiều ở đây.