Sql server 如何在不使用count(*)的情况下检查某个对象是否存在。。。限制1
我的代码是从name_列表中选择COUNT*,其中[name]='a'限制1 SQL Server中似乎没有limit子句。那么我怎么说呢?告诉我名字列表中是否有“a”。名字?没有错 首先是top,所以你必须说: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
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