WHERE EXISTS子查询中的返回列是否重要?
EXISTS子查询中SELECT后的列名是否重要?
EXISTS运算符的核心是判断子查询是否返回至少一条记录,它只关心子查询有没有结果,完全不关心子查询返回的具体内容。所以子查询里SELECT后面的内容根本不重要——不管你写具体列名、*、1、0甚至随便写个字符串,效果都是完全等价的。
举几个例子,下面这些写法在功能上没有任何区别:
WHERE EXISTS (SELECT id FROM table WHERE condition)WHERE EXISTS (SELECT * FROM table WHERE condition)WHERE EXISTS (SELECT 1 FROM table WHERE condition)WHERE EXISTS (SELECT '任意内容' FROM table WHERE condition)
数据库在处理EXISTS子查询时会自动优化,不会实际读取你指定的列数据,只要检测到符合条件的记录存在,就会返回true。实际开发中,很多人习惯写SELECT 1,既简洁又能明确传递“仅判断存在性”的意图。
内容的提问来源于stack exchange,提问作者Yandle
相关产品推荐
相关产品推荐

