连接不一定总是涉及两个不同的表,可以将表连接至它本身,创建自连接。当想要将列中
的值与同一列中的其他值进行比较时,将表连接至它本身非常有用。
要创建自连接,在 FROM 子句中列出表两次,并且每次为它指定不同的别名。使用别名
在 Projection 和 WHERE 子句中引用表。如同是两个独立的表一样。(SELECT 语句中
的别名在别名和 GBase 8s SQL 指南:语法中讨论。)
与表之间的连接一样,
可以在自连接中使用算术表达式,
可以测试空值。
可以使用 ORDER
BY 子句来以升序或降序对指定列中的值进行排序。
下列查询查询 ship_weight 相差五倍或更多并且 ship_date 不为空的订单。接着,查询按
照 ship_date 对数据进行排序。
图: 查询
SELECT x.order_num, x.ship_weight, x.ship_date,
y.order_num, y.ship_weight, y.ship_date
FROM orders x, orders y
WHERE x.ship_weight >= 5 * y.ship_weight
AND x.ship_date IS NOT NULL
AND y.ship_date IS NOT NULL
ORDER BY x.ship_date;
表 1. 查询结果
order_num
ship_weight
ship_date
order_num
ship_weight
ship_date
1004