📜  PostgreSQL – 自联接(1)

📅  最后修改于: 2023-12-03 14:45:35.474000             🧑  作者: Mango

PostgreSQL – 自联接

在PostgreSQL中,自联接可以用来对同一表中的行进行比较和处理。自联接本质上就是在相同的表中使用两个或多个别名来实现的。可以通过自联接来查询与条件匹配的记录,或者比较同一表中的不同记录。

自联接的语法

PostgreSQL的自联接语法类似于其他SQL版本。下面是一个简单的示例:

SELECT t1.name, t2.name
FROM employees t1, employees t2
WHERE t1.salary < t2.salary;

这个查询语句将employees表自联接了两次,比较薪水低的雇员与薪水高的雇员。

使用自联接进行层次查询

自联接还可以用于层次查询。比如,我们有一个表格储存父母和子女的关系,需要找出每个人的祖先。这个查询比较复杂,我们可以使用自联接来简化:

SELECT gp.name AS grandparent, p.name AS parent, c.name AS child
FROM people gp, people p, people c
WHERE
  gp.id = p.parent_id AND
  p.id = c.parent_id;

这个查询将people表自联接了三次,找到了每个人的祖先。

结论

自联接是PostgreSQL中一个比较有用的功能,它可以用于比较同一个表中的不同记录,或者将表格自己用于层次查询等。虽然有些查询需要使用多次自联接,但它们通常比使用子查询或临时表更快。