If Exists Order By (SQL Server)



我正试图设置一个SQL命令来检查SELECT语句是否会返回值。如果没有要返回的行,那么我想打印"无"。

当我写这样的声明时,它是有效的:

if exists (select * from TEP_Payments_Table where [Project Name] = 'test')
(select * from TEP_Payments_Table where [Project Name] = 'test')
else
(select 'None')

然而,当我添加"ORDER BY"时,它会失败:

if exists (select top(1) * from TEP_Payments_Table where [Project Name] = 'test' order by payid desc)
(select top(1) * from TEP_Payments_Table where [Project Name] = 'test' order by payid desc)
else
(select 'None')

为什么?

重要的是,我在选择中执行TOP(1(以返回最新的值。我感谢你的帮助。

怪异。SQL Server不喜欢第2行select语句周围的括号。这项工作:

if exists (select * from TEP_Payments_Table where [Project Name] = 'test')
select top 1 [Project Name] from TEP_Payments_Table where [Project Name] = 'test' order by payid desc
else
select 'None'

EXISTS只需验证用WHERE子句定义的条件,因此无需使用TOP (1)ORDER BY子句:

您可以直接将其表示为:

if exists (select 1 from TEP_Payments_Table where [Project Name] = 'test')
begin
select top (1) *
from TEP_Payments_Table 
where [Project Name] = 'test' 
order by payid desc
end
else 
begin
select 'non'
end

最新更新