📜  PostgreSQL – EXCEPT 运算符(1)

📅  最后修改于: 2023-12-03 15:03:49.287000             🧑  作者: Mango

PostgreSQL – EXCEPT 运算符

在PostgreSQL中,EXCEPT运算符用于从第一个查询结果中返回不在第二个查询结果中的所有行。

语法如下:

    SELECT column1, column2, ..., columnN
    FROM table1
    EXCEPT
    SELECT column1, column2, ..., columnN
    FROM table2

在上面的语法中,两个查询中具有相同名称和数据类型的列必须具有相同的数量。

示例

假设有以下两个表格:

students:

| id | name | | -- | ------ | | 1 | Alice | | 2 | Bob | | 3 | Carol | | 4 | David | | 5 | Elaine |

enrolled:

| id | student_id | course | | -- | ----------|--------| | 1 | 1 | Math | | 2 | 2 | Science| | 3 | 3 | English| | 4 | 4 | Math | | 5 | 3 | Science| | 6 | 2 | English| | 7 | 5 | Math | | 8 | 1 | Science|

现在,我们可以使用EXCEPT运算符来找出没有注册英语课程的学生:

    SELECT id, name
    FROM students
    EXCEPT
    SELECT student_id, NULL
    FROM enrolled
    WHERE course = 'English'

输出结果:

| id | name | | -- | ------ | | 1 | Alice | | 4 | David | | 5 | Elaine |

在上面的示例中,使用了EXCEPT运算符来获取所有在“学生”表格中注册但未注册到“英语”课程的学生。 它将两个查询结果相减,并返回不在第二个查询结果中的所有行。