查询后如何查找行?

时间:2009-05-10 16:49:26

标签: sql sql-server

我有一个查询,我需要找到查询返回答案的行号。 我没有专柜。我该怎么做?

提前致谢。

4 个答案:

答案 0 :(得分:2)

SELECT 
  ROW_NUMBER() OVER (<your_id_field_here> ORDER BY <field_here>) as RowNum,
  <the_rest_of_your_fields_here>
FROM
  <my_table>

答案 1 :(得分:0)

如果您有主键,则可以在SQL Server 2005及更高版本上使用此方法:

SELECT 
  ROW_NUMBER() OVER (ORDER BY PrimaryKeyField) as RowNumber,
  Field1,
  Field2
FROM
  YourSourceTable

如果您没有主键,您可能需要做的是使用如下方法将表复制到mermory表(或临时表(如果它非常大)):

DECLARE @NewTable table (
    RowNumber BIGINT IDENTITY(1,1) PRIMARY KEY,
    Field1 varchar(50),
    Field2 varchar(50),
)

INSERT INTO @NewTable
    (Field1, Field2)
SELECT
    Field1,
    Field2
FROM
    YourSourceTable

SELECT
    RowNumber,
    Field1,
    Field2
FROM
    @NewTable

关于这一点的好处是,如果源表没有主键,您将能够检测到相同的行。

此外,此时,如果他们还没有主表,我建议您为每张表添加一个主键。

答案 2 :(得分:0)

创建表t1(N1 int,N2 int)

插入t1 选择200,300

插入t1 选择200,300

插入t1 选择300,400

插入t1 选择400,400 ..... ......

选择row_number()over(按[N1]排序)RowNumber,* from t1

答案 3 :(得分:0)

  

我有一个查询,我需要找到   查询返回的行号   回答。我没有任何反击   领域。我是怎么做到的?

如果我正确理解了您的问题,那么您会有某种查询返回一行或几行(答案,答案),并且您希望将行号与“答案”相关联

正如你所说,你没有任何反作用领域所以你需要的是以下内容:

  • 决定订购标准
  • 添加计数器
  • 运行查询

如果您为问题提供了更多详细信息,那将会非常有帮助。 如果您确认我正确理解了您的问题,我将添加一个代码示例