WHERE EXISTS子查询中列是否重要?

WHERE EXISTS子查询中列是否重要?

问题描述

在本次教程中,SQL EXISTS运算符具有以下语法:

SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

子查询中select语句中的column_name是否重要?从其他答案看来,似乎已经使用了0、1、*或者一些任意的列名。

解决方案

从子查询表达式文档中的EXISTS部分可以看出:

子查询通常只会执行一段时间,以确定是否返回至少一行,而不会一直执行到结束。

由于结果只取决于是否返回任何行,而不是这些行的内容,因此子查询的输出列表通常不重要。

不仅如此,从9.4版本开始,它甚至不需要存在:

允许SELECT拥有一个空的目标列表(Tom Lane)

示例:

CREATE TABLE table_name AS SELECT 'hello' AS "column_name", 
                                   true   AS "condition"  ;
SELECT column_name
FROM table_name
WHERE EXISTS (SELECT FROM table_name WHERE condition);
column_name   
---  
hello 

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程