PostgreSQL 子查询

在本节中,我们将了解PostgreSQL 子查询的工作原理,它允许我们创建一个困难的查询。我们还看到了具有不同子句(例如SELECT、FROM 和 WHERE)、不同条件(例如IN、EXISTS)和不同查询(例如SELECT、INSERT、UPDATE 和 DELETE)的子查询示例。

PostgreSQL子查询介绍

子查询是在另一个查询中使用的命令。相反,INNER SELECT或INNER 语句称为SUBQUERY,OUTER SELECT或OUTER 语句称为MAIN 命令。PostgreSQL 子查询括在圆括号中。

PostgreSQL 子查询可以与不同的子句一起使用,例如 SELECT、FROM、WHERE和HAVING 子句。

我们还可以将 PostgreSQL 子查询与SELECT、INSERT、UPDATE和DELETE 命令以及不同的运算符(如<、>、=、<=、>=、 BETWEEN、IN等)结合使用。

具有不同子句的 PostgreSQL 子查询示例

让我们看不同的例子来理解PostgreSQL 子查询如何与各种子句一起工作。

带有 SELECT 子句的 PostgreSQL 子查询示例

PostgreSQL子查询也可以与 SELECT子句结合使用。

当我们想要借助Average、Count、Sum、Max 和 Min 函数等聚合函数获取计算结果时,会使用子查询,但我们不希望将聚合函数用于MAIN 查询。

在这里,我们将展示如何使用带有 SELECT 子句的子查询。

我们从javatpoint 数据库中获取car表,以从表中选择特定数据。

SELECT c1.car_name, c1.car_model,  
    (SELECT MIN (car_id)  
     FROM car c2  
     WHERE c1.car_id = c2.car_id) Subquery1  
FROM car c1;  

执行上述命令后,我们将得到以下输出:

在上面的示例中,我们在SELECT子句中创建了一个子查询,如下所示:

我们将子查询别名为名称Subquery1,这将是用于引用上述子查询或任何这些字段的名称。

带有 FROM 子句的 PostgreSQL 子查询示例

PostgreSQL 子查询也可以与FROM 子句结合使用。

为此,我们从我们在 PostgreSQL 教程的前面部分创建的javatpoint 数据库中获取Course 和 Course_categories表。

SELECT course.course_name, Subquery2.course_category_id  
FROM course,  
    (SELECT course_categories.course_category_id, course_categories.course_category,   
    COUNT (course_category_id) AS total  
    FROM course_categories  
    GROUP BY course_categories.course_category_id, course_categories.course_category) Subquery2  
WHERE Subquery2.course_category_id = course.course_id; 

成功执行上述命令后,我们将得到以下输出:

在上面的示例中,我们在FROM子句中创建了一个子查询,如下所示:

我们将子查询别名为名称Subquery2,这将是用于引用上述子查询或任何这些字段的名称。

热门文章

优秀文章