Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在不使用count(*)的情况下检查某个对象是否存在。。。限制1_Sql Server - Fatal编程技术网

Sql server 如何在不使用count(*)的情况下检查某个对象是否存在。。。限制1

Sql server 如何在不使用count(*)的情况下检查某个对象是否存在。。。限制1,sql-server,Sql Server,我的代码是从name_列表中选择COUNT*,其中[name]='a'限制1 SQL Server中似乎没有limit子句。那么我怎么说呢?告诉我名字列表中是否有“a”。名字?没有错 首先是top,所以你必须说: select top 1 1 from name_list where [name]='a' 如果有数据,您将得到一行,其中只有一个未命名字段,查询中有1,如果没有数据,则根本没有行。TOP子句与LIMIT最接近。下面将返回第一行中名称字段等于“a”的所有字段。尽管如果有多行匹配,e

我的代码是从name_列表中选择COUNT*,其中[name]='a'限制1

SQL Server中似乎没有limit子句。那么我怎么说呢?告诉我名字列表中是否有“a”。名字?

没有错

首先是top,所以你必须说:

select top 1 1 from name_list where [name]='a'
如果有数据,您将得到一行,其中只有一个未命名字段,查询中有1,如果没有数据,则根本没有行。

TOP子句与LIMIT最接近。下面将返回第一行中名称字段等于“a”的所有字段。尽管如果有多行匹配,ets返回的行将是未定义的,除非您还提供ORDER BY子句

但是,如果你正在进行计数,就没有必要使用它*。下面将返回包含单个字段的单行,该字段是整个表中名称字段eqals为“a”的行数

SELECT COUNT(*) FROM name_list WHERE [name]='a'
您也可以执行相反的操作:

IF (NOT EXISTS(SELECT [name] FROM name_list where [name] = 'a'))
begin
   //do other work if not exists
end

COUNT*返回一行,无需限制。 极限的ANSI等效值为TOP:选择TOP1。。。从…起哪里 最后,还有一个存在:如果存在,请选择*FROM。。。在哪里

注意事项:

不要担心SELECT*——数据库引擎知道您在问什么 如果只是为了说明-现有选择。。。表达是回答你问题的方式 如果块中只有一条语句,那么严格来说,BEGIN和END是不必要的
此查询将准确返回您想要的结果:

SELECT TOP 1 CASE WHEN EXISTS(SELECT * WHERE [name] = 'a') THEN 1 ELSE 0 END FROM name_list

在SQL Server中,top不带括号。@jpabluz:SQL Server 2005+支持top条件周围的括号,以支持正在使用的变量。@jpabluz:INSERT、UPDATE和DELETE语句中需要用括号分隔top中的表达式。为了向后兼容,支持SELECT语句中不带括号的TOP表达式,但我们不建议这样做。。由于要谨慎使用,有些企业应用程序不完全支持IF子句。
IF (NOT EXISTS(SELECT [name] FROM name_list where [name] = 'a'))
begin
   //do other work if not exists
end
IF EXISTS(SELECT * FROM name_list WHERE name = 'a')
BEGIN
    -- such a record exists
END
ELSE
BEGIN
    -- such a record does not exist
END
SELECT TOP 1 CASE WHEN EXISTS(SELECT * WHERE [name] = 'a') THEN 1 ELSE 0 END FROM name_list