PostgreSQL Exists 结合 Select, Insert, Update & Delete 示例
PostgreSQL 中 Exists 是什么?
PostgreSQL EXISTS 操作符用于测试子查询中是否存在行。这意味着该操作符与子查询一起使用。当子查询中找到至少一行时,就认为满足了 Exists 操作符。您可以将此操作与 SELECT、UPDATE、INSERT 和 DELETE 语句一起使用。
Postgres Exists 查询语法
以下是 PostgreSQL EXISTS 语句的语法
WHERE EXISTS (subquery);
上述语法显示 EXISTS 操作符接受一个参数,即子查询。子查询只是一个 SELECT 语句,它应该以 SELECT * 开头,而不是列名或表达式列表。
PostgreSQL Exists 与 SELECT 语句
让我们看看如何将 SELECT 语句与 EXISTS 操作符一起使用。我们有以下表
Book
价格
运行以下语句
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
这将返回以下内容
上述命令应返回 Book 表中 id 与子查询中任何记录的 id 匹配的所有记录。只有一个 id 匹配。因此,只返回了一条记录。
PostgreSQL Exists 与 INSERT 语句
我们可以在 INSERT 语句中使用 EXISTS 操作符。我们有以下 3 个表
Book
价格
Price2
然后我们可以运行以下语句
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Price 表现在如下所示
Price2 表中 id 为 5 的行已匹配。然后该记录被插入到 Price 表中。
Postgres Exists 与 UPDATE 语句
我们可以在 UPDATE 语句中使用 EXISTS 操作符。
运行以下查询
UPDATE Price SET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id) WHERE EXISTS (SELECT id, price FROM Price2 WHERE Price2.id = Price.id);
我们正在更新 Price 表的 price 列。我们的目标是使共享相同 id 的项目的价格相同。只有一个行匹配,即 5。
但是,由于价格相等(即 205),因此未进行任何更新。如果存在差异,则会进行更新。
Postgres Exists 与 DELETE 语句
PostgreSQL DELETE 语句可以使用 EXISTS 操作符。这是一个例子
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Price 表现在如下所示
id 为 5 的行已被删除。
使用 pgAdmin 的 PostgreSQL Exists 语句
现在让我们看看如何使用 pgAdmin 执行这些操作
如何使用 pgAdmin 在 PostgreSQL 中使用 SELECT 语句进行 Exists 查询
以下是使用 pgAdmin 在 PostgreSQL 中使用 Exists 查询进行 SELECT 语句的步骤
步骤 1) 登录您的 pgAdmin 账户
打开 pgAdmin 并使用您的凭据登录您的账户
步骤 2) 创建演示数据库
- 在左侧的导航栏中,点击 Databases。
- 点击 Demo。
步骤 3) 输入查询
在查询编辑器中输入以下查询
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
步骤 4) 执行查询
点击 Execute 按钮
它应该返回以下内容
使用 INSERT 语句
要通过 pgAdmin 完成相同的操作,请执行此操作
步骤 1) 登录您的 pgAdmin 账户。
步骤 2)
- 在左侧的导航栏中,点击 Databases。
- 点击 Demo。
步骤 3) 在查询编辑器中输入查询
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
步骤 4) 点击 Execute 按钮。
Price 表现在应该如下所示
使用 UPDATE 语句
要通过 pgAdmin 完成相同的操作,请执行此操作
步骤 1) 登录您的 pgAdmin 账户。
步骤 2)
- 在左侧的导航栏中,点击 Databases。
- 点击 Demo。
步骤 3) 在查询编辑器中输入查询
UPDATE Price SET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id) WHERE EXISTS (SELECT id, price FROM Price2 WHERE Price2.id = Price.id);
步骤 4) 点击 Execute 按钮。
Price 表现在应该如下所示
使用 DELETE 语句
要通过 pgAdmin 完成相同的操作,请执行此操作
步骤 1) 登录您的 pgAdmin 账户。
步骤 2)
- 在左侧的导航栏中,点击 Databases。
- 点击 Demo。
步骤 3) 在查询编辑器中输入查询
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
步骤 4) 点击 Execute 按钮。
Price 表现在应该如下所示
摘要
- EXISTS 操作符测试子查询中是否存在行。
- 它与子查询一起使用,当子查询至少返回一行时,就认为它已满足。
- 它与 SELECT、UPDATE、INSERT 和 DELETE 语句一起使用。