如果存在订单依据(SQL Server)

如果存在订单依据(SQL Server),sql,sql-server,Sql,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”时,它

我试图设置一个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')
为什么呢


重要的是,我在select中选择TOP1以返回最近的值。谢谢你的帮助。

奇怪。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'
存在仅验证使用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

这有多奇怪?干杯,伙计。