如何检查表是否包含SQL Server 2005行?

有帮助吗?

解决方案

出于什么目的?

  • 最快的if IF EXISTS (SELECT * FROM Table)...
  • 对于结果集, SELECT TOP 1 1 FROM Table 返回零或一行
  • 恰好具有计数(0或非零)的一行, SELECT COUNT(*) FROM Table

其他提示

另外,您可以使用 存在

select case when exists (select 1 from table) 
          then 'contains rows' 
          else 'doesnt contain rows' 
       end

或检查是否有子行以获取特定记录:

select * from Table t1
where exists(
select 1 from ChildTable t2
where t1.id = t2.parentid)

或程序中

if exists(select 1 from table)
begin
 -- do stuff
end

像其他人说的那样,您可以使用类似的东西:

IF NOT EXISTS (SELECT 1 FROM Table)
  BEGIN 
    --Do Something
  END 
ELSE
  BEGIN
    --Do Another Thing
  END

为了获得最佳性能,请使用特定的列名而不是 * - 例如:

SELECT TOP 1 <columnName> 
FROM <tableName> 

这是最佳的,因为它没有返回整个列列表,而是仅返回一个列。可以节省一些时间。

另外,如果有任何值,则仅返回第一行,使其更快。实际上,结果您只有一个值 - 如果没有行,则没有任何行,也没有值。

如果您以分布式方式使用表,这很可能是这种情况,而不是将一个值从服务器传输到客户端的速度要快得多。

您还应该在所有列中明智地选择从列中获取数据的数据,该列的资源尽可能少。

您不能仅使用使用的行 select count(*) from table (还是索引列而不是 *如果速度很重要)?

如果不是这样,也许 本文 可以将您指向正确的方向。

嗯,除了标题之外,除了标题之外,我使用了托管记分卡的Web部件的标题URL。所以在上面的上面的顶部,如果我点击加德满都谷项目,它将带我到所需的SharePoint页面。 以下是编辑Web部件标题URL所需的步骤。

  1. 单击编辑Web部件。
  2. 展开高级部分。
  3. 填写标题URL的值。

    它确实给了我一种替代方法来实现我的目的来从记分卡中重定向到摘要页面。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top