内联接
内联接基于联接谓词将两个表中的记录组合在一起,并要求第一个表中每个记录在第二个表中都具有匹配的记录。因此,内联接只会返回两个已联接表中符合联接条件的记录。不包含匹配项的记录将从结果集中排除。
内联接采用以下格式:
SELECT column‑list FROM left-join-table
[INNER] JOIN right-join-table ON join-predicate
如果您省略 INNER
关键字,则 Vertica 假定内联接。内联接是可交换的和关联的。您可以按任何顺序指定表而不更改结果。
示例
以下示例指定表 store.store_dimension
和 public.employee_dimension
之间的内联接,其记录分别在 store_region
和 employee_region
列中具有匹配值。
=> SELECT s.store_region, SUM(e.vacation_days) TotalVacationDays
FROM public.employee_dimension e
JOIN store.store_dimension s ON s.store_region=e.employee_region
GROUP BY s.store_region ORDER BY TotalVacationDays;
这种联接也可以表示如下:
=> SELECT s.store_region, SUM(e.vacation_days) TotalVacationDays
FROM public.employee_dimension e, store.store_dimension s
WHERE s.store_region=e.employee_region
GROUP BY s.store_region ORDER BY TotalVacationDays;
两个查询返回相同的结果集:
store_region | TotalVacationDays
--------------+-------------------
NorthWest | 23280
SouthWest | 367250
MidWest | 925938
South | 1280468
East | 1952854
West | 2849976
(6 rows)
如果联接的内表 store.store_dimension
有任何行的 store_region
值与表 public.employee_dimension
中的 employee_region
值不匹配,则从结果集中排除这些行。要包含该行,您可以指定外联接。