我看到过很多这样的问题。
Select 1
From table
这个1是什么意思,它将如何执行,它将返回什么?
另外,在什么类型的场景中可以使用它?
我看到过很多这样的问题。
Select 1
From table
这个1是什么意思,它将如何执行,它将返回什么?
另外,在什么类型的场景中可以使用它?
当前回答
它做了它所说的——它总是返回整数1。它用于检查是否存在与where子句匹配的记录。
其他回答
这意味着你想要一个值“1”作为输出,或者大部分时间用作内部查询,因为出于某种原因,你想要根据内部查询的结果计算外部查询。不是所有的时候你都用1,但是你有一些特定的值…
这将静态地为您提供值1的输出。
对于表中的每条记录,结果都是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...)
更具体地说,您将使用这个来做
SELECT 1 FROM MyUserTable WHERE user_id = 33487
而不是做
SELECT * FROM MyUserTable WHERE user_id = 33487
因为你不关心结果。对于数据库来说,请求数字1非常容易(因为它不需要进行任何查找)。
它做了它所说的——它总是返回整数1。它用于检查是否存在与where子句匹配的记录。