簡體   English   中英

僅當使用ROW_NUMBER對內部選擇進行過濾時,才返回SQL數據

[英]SQL Data only returned if filtering on inner select with ROW_NUMBER

我試圖到達查詢的底部,如果我對以下語句的內部選擇進行過濾,則僅返回數據:

作品:

SELECT * FROM 
(
SELECT    
      [szPhoneNo] Email      
      ,ROW_NUMBER() OVER (PARTITION BY CLID ORDER BY t_clientphone.PhoneType_Id ASC) AS Seq       
  FROM [SLacsis_SLM].[dbo].[T_ClientPhone] t_clientphone INNER JOIN 
  [SLacsis_SLM].[dbo].[TL_PhoneType] PT ON t_clientphone.PhoneType_ID = PT.PhoneType_ID  
  WHERE t_clientphone.szPhoneNo LIKE '%reg28%'          
            ) T where T.Seq = 1 --AND Email LIKE '%reg28%'

(返回10行)

不起作用:

SELECT * FROM 
(
SELECT    
      [szPhoneNo] Email      
      ,ROW_NUMBER() OVER (PARTITION BY CLID ORDER BY t_clientphone.PhoneType_Id ASC) AS Seq       
  FROM [SLacsis_SLM].[dbo].[T_ClientPhone] t_clientphone INNER JOIN 
  [SLacsis_SLM].[dbo].[TL_PhoneType] PT ON t_clientphone.PhoneType_ID = PT.PhoneType_ID  
  --WHERE t_clientphone.szPhoneNo LIKE '%reg28%'            
            ) T where T.Seq = 1 AND Email LIKE '%reg28%'

(返回0行)

誰能解釋為什么第二個查詢沒有返回行,是否有辦法解決?

我知道當PARTITION BYORDER BY列不唯一時, ROW_NUMBER是不確定的(內部選擇中的一些行就是這種情況)。

我將在此期間查看是否可以使用臨時表重新創建問題。

第二個查詢中的第一個項目(即Seq = 1的項目)沒有類似%REG28%的電子郵件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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