2017-05-26 43 views
-5

我只是想知道如果下面的SQL语句下降表“Final_Results”,如果表不包含任何行(除标题)。简短的SQL语句检查

if exists(select * from Final_Results) 
    begin 
     drop table Final_Results 
    end 

非常感谢 问候,米洛斯

+2

你用基本的测试表来试试吗?它有用吗? – Jamiec

+4

如果Final_Results中有记录,它将会丢失。请改用NOT EXISTS。 – Kapil

+0

这似乎是错误的。这是一个关于表格的*内容*的测试,然后控制表格的*存在*。通常情况下,你会希望测试和更改都处于相同的“级别”(测试内容,删除内容或测试存在,丢弃) –

回答

0

使用NOT EXISTS

if not exists(select * from Final_Results) 
    begin 
     drop table Final_Results 
    end 
0

在你的情况下,它会掉落Final_Results表如果表中的一个或多个行,所以你应该使用Not Exists代替:

if Not Exists(SELECT * FROM Final_Results) 
    begin 
     DROP TABLE Final_Results 
    end 
0

使用计数,而不是

if ((SELECT count(*) FROM Final_Results)=0) 
    begin 
     DROP TABLE Final_Results 
    end 
+0

如果您需要知道的所有信息都是存在的,则使用COUNT而不是EXISTS是一种反模式。如果优化器很聪明,它能做的最好和'EXISTS'一样。如果优化器是愚蠢的,它可能实际上*计数所有行*,而不是一找到一行就返回。 –

+0

它可能是一个解决方案。 – Ravi