Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择前50行_C#_Asp.net_Sql Server - Fatal编程技术网

C# 选择前50行

C# 选择前50行,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我对使用MSSQL相当陌生,遇到了一个奇怪的问题。给定最后一个查询中的第一个记录id,我需要找到之前满足与第一个查询相同条件的50行,并按降序返回它们。这是针对ASP.NET站点的,我很确定ASP端是正确的,但是当我尝试运行SQL查询时,它给出了错误的结果 这就是我一直在尝试的SQL WITH PreviousPosts AS ( SELECT * FROM [database].[dbo].[table] WHERE (A_1STNAME LIKE '(varia

我对使用MSSQL相当陌生,遇到了一个奇怪的问题。给定最后一个查询中的第一个记录id,我需要找到之前满足与第一个查询相同条件的50行,并按降序返回它们。这是针对ASP.NET站点的,我很确定ASP端是正确的,但是当我尝试运行SQL查询时,它给出了错误的结果

这就是我一直在尝试的SQL

 WITH PreviousPosts AS 
 (
    SELECT *
    FROM [database].[dbo].[table]
    WHERE (A_1STNAME LIKE '(variable)%')
    AND A_RECID < '(lastPost)'
 )
SELECT TOP 50 * FROM PreviousPosts
ORDER BY A_RECID ASC
其中variable和lastPost实际上是用MyC的正确参数填充的

我不再收到错误,但现在无论最后一篇文章提供了什么,我都得到了相同的结果

更新:结果是表中的前50个名字,就像在我的测试用例中一样


感谢您的帮助:

您的CTE中缺少表名。见**[表格名称]**


您的CTE中缺少表名。见**[表格名称]**


如前所述,CTE中缺少表名。您还缺少要从CTE中获取的列

您应该更改:

SELECT TOP 50 FROM PreviousPosts ORDER BY A_RECID ASC
致:


如前所述,CTE中缺少表名。您还缺少要从CTE中获取的列

您应该更改:

SELECT TOP 50 FROM PreviousPosts ORDER BY A_RECID ASC
致:


要添加到列表中,您不能在CTE内拥有订单。为了得到您想要的,请完全放弃CTE:

SELECT top 50 * 
FROM [database].[dbo].**[TABLENAME]** 
WHERE (A_1STNAME LIKE (variable)%) 
AND A_RECID < (lastPost) 
ORDER BY A_RECID DESC 

要添加到列表中,您不能在CTE内拥有订单。为了得到您想要的,请完全放弃CTE:

SELECT top 50 * 
FROM [database].[dbo].**[TABLENAME]** 
WHERE (A_1STNAME LIKE (variable)%) 
AND A_RECID < (lastPost) 
ORDER BY A_RECID DESC 

这是一个尝试,根据我现在对您的模式的了解。我仍然需要做更多的假设,这可能是不对的:

;WITH RankedRecords AS
(
    SELECT
        ROW_NUMBER() OVER(ORDER BY A_RECID DESC) Row
        , A_RECID
    FROM [database]..[table]
    WHERE A_1STNAME LIKE '(variable)%')
        AND CAST(LEFT(A_RECID, 8) AS DATE) < CAST(LEFT('(lastPost)', 8) AS DATE)
)
SELECT TOP 50
    T.*
FROM[database]..[table] T
INNER JOIN RankedRecords
    ON RankedRecords.A_RECID = T.A_RECID
    AND RankedRecords BETWEEN (@LastPost - 51) AND (@LastPost - 1)
ORDER BY RankedRecords.Row

这是一个尝试,根据我现在对您的模式的了解。我仍然需要做更多的假设,这可能是不对的:

;WITH RankedRecords AS
(
    SELECT
        ROW_NUMBER() OVER(ORDER BY A_RECID DESC) Row
        , A_RECID
    FROM [database]..[table]
    WHERE A_1STNAME LIKE '(variable)%')
        AND CAST(LEFT(A_RECID, 8) AS DATE) < CAST(LEFT('(lastPost)', 8) AS DATE)
)
SELECT TOP 50
    T.*
FROM[database]..[table] T
INNER JOIN RankedRecords
    ON RankedRecords.A_RECID = T.A_RECID
    AND RankedRecords BETWEEN (@LastPost - 51) AND (@LastPost - 1)
ORDER BY RankedRecords.Row

我认为,在解决了第一个问题之后,您仍然会遇到另一个问题,除非您将LIKE variable%更改为LIKE‘variable%”。除非它看起来是这样的,因为你在把它放入你的问题时是如何修改它的。是的,这和缺少的表名都是我在为问题编写sql时失败的原因,对不起大家@JavaJosh94您能用SQL属性编辑您的问题吗?这样我们就可以帮助您了?编辑它以匹配我当前的SQL属性。我不再收到错误了,但我得到了奇怪的结果。它并没有给出之前的结果,而是给出了大约100次之后的结果lastPost@JavaJosh94我试着给你一个答案。即使它是错误的,您也可以在CTE中使用行数技术,然后在此基础上进行过滤。另外,我尝试从A_RECID中提取日期,因为您给了我一个包含日期的格式。我认为在解决第一个问题后,您仍然会有另一个问题,除非您将LIKE variable%更改为LIKE“variable%”。除非它看起来是这样的,因为你在把它放入你的问题时是如何修改它的。是的,这和缺少的表名都是我在为问题编写sql时失败的原因,对不起大家@JavaJosh94您能用SQL属性编辑您的问题吗?这样我们就可以帮助您了?编辑它以匹配我当前的SQL属性。我不再收到错误了,但我得到了奇怪的结果。它并没有给出之前的结果,而是给出了大约100次之后的结果lastPost@JavaJosh94我试着给你一个答案。即使它是错误的,您也可以在CTE中使用行数技术,然后在此基础上进行过滤。另外,我试着从A_RECID中提取日期,因为你给了我一个包含日期的格式。非常感谢!!我永远也想不到!非常感谢!!我永远也想不到!