2017-05-26 49 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