首页 > 解决方案 > IF EXISTS 和多个 SELECT 语句

问题描述

我对 SQL 比较陌生。

我试图让 SELECT 语句仅在另一个 SELECT 语句返回一些结果时运行。

我写了这样的东西:

DO
$$
BEGIN
IF EXISTS
(SELECT column1, column2 FROM table1 WHERE condition)
THEN
(SELECT column2, column3 FROM table2 WHERE condition);
END IF;
END
$$

我猜这里的问题是“IF EXISTS ... THEN”必须后跟一个表修饰符操作,而不是一个 SELECT 语句。那是对的吗?

当我处理一个相当大的数据集时,目的是仅当第一个语句返回任何内容时才运行第二个语句。

WHERE EXISTS 会是更好的选择吗?

标签: sqlpostgresql

解决方案


你的方法没有错。如果你想要一个查询:

SELECT column2, column3
FROM table2
WHERE condition AND
      EXISTS (SELECT column1, column2 FROM table1 WHERE condition);

推荐阅读