根据行数据过滤SELECT语句

时间:2015-09-02 19:46:59

标签: sql sql-server

我正在尝试向WHERE语句添加SELECT子句,以检查表中是否有数据或者是否为0行表。

基本上,我试图让它工作,但显然tables.NAME不是有效的对象。

SELECT NAME 
FROM   sys.tables 
WHERE  (SELECT Count(*) 
    FROM   tables.NAME) <> 0 

我不想创建一个临时表,声明一个游标并逐行检查一个值,但是我很难想到如何做到这一点。

1 个答案:

答案 0 :(得分:0)

使用游标是解决此问题的合适方法。您无法动态地将一个表中的列解释为表名,同时从该表中进行选择以查看它是否为空,就像您尝试做的那样。实际上,您甚至无法在不使用动态SQL的情况下从动态表中进行选择。请参阅FROM的文档。您可以迭代每个表并检查每个表,也可以query system tables保存存储统计信息以查看表是否为空。