[英]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不喜欢第二行上的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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.