我只是想知道如果下面的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
这似乎是错误的。这是一个关于表格的*内容*的测试,然后控制表格的*存在*。通常情况下,你会希望测试和更改都处于相同的“级别”(测试内容,删除内容或测试存在,丢弃) –