我试图找到一个查询的底部,如果我过滤以下语句的内部选择,则只返回数据:
作品:
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 行)
谁能解释为什么第二个查询没有返回行以及是否有办法解决它?
我知道ROW_NUMBER
当PARTITION BY
和ORDER BY
列不是唯一的(内部选择中的一些行就是这种情况)时,这是不确定的。
我会看看我是否可以同时使用临时表重新创建问题。