我只是想知道如果下面的SQL語句下降表「Final_Results」,如果表不包含任何行(除標題)。簡短的SQL語句檢查
if exists(select * from Final_Results)
begin
drop table Final_Results
end
非常感謝 問候,米洛斯
我只是想知道如果下面的SQL語句下降表「Final_Results」,如果表不包含任何行(除標題)。簡短的SQL語句檢查
if exists(select * from Final_Results)
begin
drop table Final_Results
end
非常感謝 問候,米洛斯
使用NOT EXISTS
if not exists(select * from Final_Results)
begin
drop table Final_Results
end
在你的情況下,它會掉落Final_Results表如果表中的一個或多個行,所以你應該使用Not Exists
代替:
if Not Exists(SELECT * FROM Final_Results)
begin
DROP TABLE Final_Results
end
使用計數,而不是
if ((SELECT count(*) FROM Final_Results)=0)
begin
DROP TABLE Final_Results
end
如果您需要知道的所有信息都是存在的,則使用COUNT而不是EXISTS是一種反模式。如果優化器很聰明,它能做的最好和'EXISTS'一樣。如果優化器是愚蠢的,它可能實際上*計數所有行*,而不是一找到一行就返回。 –
它可能是一個解決方案。 – Ravi
你用基本的測試表來試試嗎?它有用嗎? – Jamiec
如果Final_Results中有記錄,它將會丟失。請改用NOT EXISTS。 – Kapil
這似乎是錯誤的。這是一個關於表格的*內容*的測試,然後控制表格的*存在*。通常情況下,你會希望測試和更改都處於相同的「級別」(測試內容,刪除內容或測試存在,丟棄) –