从表中select1是什么意思?

我看过很多这样的问题

Select 1 From table 

这是什么意思,它将如何执行,它会返回什么? 请指导我在什么types的情况下可以使用?

提前致谢

SELECT 1 FROM TABLE_NAME表示“从表中返回1”。 它本身是非常不起眼的,所以它通常会和WHERE一起使用,而且通常是存在的(正如@gbn所指出的那样,这不一定是最佳实践,然而,即使它不是真的有意义的(也就是说,我会使用它,因为其他人使用它,并立即“更明显”。当然,这可能是一个鸡蛋对鸡蛋粘稠的问题,但我通常不居住))。

  SELECT * FROM TABLE1 T1 WHERE EXISTS ( SELECT 1 FROM TABLE2 T2 WHERE T1.ID= T2.ID ); 

基本上,上面将返回从表1中有相应的ID从表2。(这是一个人为的例子,显然,但我相信它传达的想法。就个人而言,我可能做上述作为SELECT * FROM TABLE1 T1 WHERE ID IN (SELECT ID FROM TABLE2);因为我认为FAR对读者更加明确,除非有一个非常令人信服的理由)。

编辑

实际上有一个我刚才忘记的情况。 在您试图从外部语言确定数据库中存在值的情况下,有时会使用SELECT 1 FROM TABLE_NAME 。 这对于select单个列并没有提供显着的好处,但是,根据实现的不同,它可能会提供比实现SELECT *好处,仅仅是因为通常情况下,数据库返回的语言越多,数据结构,这意味着更多的时间将采取。

如果你的意思是类似的

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

那么1就比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...) 

select 1 from table将为表的每一行返回常量1。 当你想便宜地确定logging是否与你的where子句和/或join相匹配时,这很有用。

它做它所说的 – 它将始终返回整数1.它用于检查是否存在匹配您的where子句的logging。

select 1 from table被某些数据库用作查询来testing连接以查看它是否处于活动状态,通常在从连接池检索或返回连接时使用。

表中的每个logging的结果是1__

虽然它并不广为人知,但查询可以有一个没有GROUP BY子句的HAVING子句。

在这种情况下, HAVING子句适用于整个集合。 显然, SELECT子句不能引用任何列,否则你会(正确)得到错误,“列在select中无效,因为它不包含在GROUP BY中”等。

因此, 必须使用字面值(因为SQL不允许带有零列的结果集 – 为什么?!),并且通常使用字面值1( INTEGER ):如果HAVING子句求值为TRUE那么结果集将是1用一列显示值1,否则你得到空集。

例如:查找一列是否有多个不同的值:

 SELECT 1 FROM tableA HAVING MIN(colA) < MAX(colA); 

如果你不知道你有没有任何数据表,你可以使用下面的查询:

 SELECT cons_value FROM table_name; 

例如:

 SELECT 1 FROM employee; 
  1. 它将返回一个包含行总数的列,并且所有行具有相同的常量值1(对于这段时间,所有行都返回1);
  2. 如果表格中没有行,它将不会返回任何内容。

因此,我们使用这个SQL查询来了解表中是否有数据,并且行数表示这个表中有多less行。

如果您只想根据WHERE子句检查true或false,请从表中select1,其中condition是最便宜的方法。

这意味着你想要一个值为“ 1 ”作为输出或大多数时间作为内部查询使用,因为由于某种原因,你想计算外部查询基于内部查询的结果..不是所有的时间你使用1,但你有一些具体的价值…

这将静态地给你输出值为1。

更具体一点,你可以用这个来做

 SELECT 1 FROM MyUserTable WHERE user_id = 33487 

而不是做

 SELECT * FROM MyUserTable WHERE user_id = 33487 

因为你不在乎看结果。 询问数字1对于数据库是非常容易的(因为它不需要查找)。

我看到它总是用在SQL注入中,比如:

www.urlxxxxx.com/xxxx.asp?id=99 union select 1,2,3,4,5,6,7,8,9 from database;

这些数字可以用来猜测数据库的存在位置,猜测你指定的数据库的列名和表的值。

它简单的意思是你从表中检索第一列的数字,,,,表示selectEmply_num,雇员Empl_no; 在这里,您正在使用来自员工的select 1; 这意味着您正在检索Emply_num列。 谢谢