簡體   English   中英

如果存在排序依據(SQL Server)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM