我看到过很多这样的问题。

Select 1  
From table

这个1是什么意思,它将如何执行,它将返回什么?

另外,在什么类型的场景中可以使用它?


当前回答

如果你的意思是

SELECT * FROM AnotherTable
  WHERE EXISTS (SELECT 1 FROM table WHERE...) 

那么1优于

SELECT * FROM AnotherTable
  WHERE EXISTS (SELECT * FROM table WHERE...) 

EXISTS中的1或*被忽略,你可以按照ANSI SQL 1992标准的第191页写:

SELECT * FROM AnotherTable
  WHERE EXISTS (SELECT 1/0 FROM table WHERE...) 

其他回答

它做了它所说的——它总是返回整数1。它用于检查是否存在与where子句匹配的记录。

如果你只是想根据WHERE子句检查是真还是假,从表中选择1,其中条件是最便宜的方法。

对于表中的每条记录,结果都是1。

如果你不知道你的表中是否存在任何数据,你可以使用以下查询:

SELECT cons_value FROM table_name;

例如:

SELECT 1 FROM employee;

它将返回一个包含行总数的列,并且所有行都具有相同的常量值1(这次它为所有行返回1); 如果表中没有行,它将不返回任何内容。

因此,我们使用这个SQL查询来知道表中是否有任何数据&行数表示这个表中有多少行。

它简单地表示您正在从表,,,,中检索数字第一列 select empl_num,Empl_no From Employees; 这里你使用select 1 from Employees; 这意味着您正在检索Emply_num列。 谢谢