计算返回结果的Sql查询

计算返回结果的Sql查询,sql,Sql,如何编写一个SQL查询,该查询从表中选择一列,但返回两列,其中另一列包含该行的索引—一个新列,从1到n开始。它必须不使用像row_number这样的函数。 有什么想法吗 编辑:必须是单选查询如果您使用的是Oracle或支持序列对象的数据库,请为此创建一个新的db序列对象。接下来创建一个视图,并运行此操作 SET NOCOUNT ON DECLARE @item_table TABLE ( row_num INT IDENTITY(1, 1) NOT NULL PRIMARY KEY, --T

如何编写一个SQL查询,该查询从表中选择一列,但返回两列,其中另一列包含该行的索引—一个新列,从1到n开始。它必须不使用像row_number这样的函数。 有什么想法吗


编辑:必须是单选查询

如果您使用的是Oracle或支持序列对象的数据库,请为此创建一个新的db序列对象。接下来创建一个视图,并运行此操作

SET NOCOUNT ON

DECLARE @item_table TABLE
(
 row_num INT IDENTITY(1, 1) NOT NULL PRIMARY KEY, --THE IDENTITY STATEMENT IS IMPORTANT!
 field_company_name VARCHAR(255)
)

INSERT INTO @item_table 
    SELECT field_company_name FROM field_company

SELECT  * FROM @item_table

在视图中插入select column_name,sequence.next from table

如果您使用的是Oracle或支持sequence对象的数据库,请为此创建一个新的db sequence对象。接下来创建一个视图,并运行此操作

作为select column_name,sequence插入视图。下一步,在mysql的表中,您可以:

SELECT Row,Column1
FROM (SELECT @row := @row + 1 AS Row, Column1 FROM table1 ) 
As derived1
在mysql中,您可以:

SELECT Row,Column1
FROM (SELECT @row := @row + 1 AS Row, Column1 FROM table1 ) 
As derived1

您可以在任何数据库上执行此操作:

SELECT  (SELECT COUNT (1) FROM field_company fc2
         WHERE fc2.field_company_id <= fc.field_company_id) AS row_num,
        fc.field_company_name
FROM    field_company fc

您可以在任何数据库上执行此操作:

SELECT  (SELECT COUNT (1) FROM field_company fc2
         WHERE fc2.field_company_id <= fc.field_company_id) AS row_num,
        fc.field_company_name
FROM    field_company fc

我想出了一个让我有点惭愧的方法。关于Postgres 8.1:

选择generate_series,选择username FROM users LIMIT 1 OFFSET generate_series FROM generate_series 0,选择count*-1 FROM users


我相信即使您的源表没有唯一的ID或标识符,这种技术也会起作用。

我想出了一种让我感到有点惭愧的黑客方法。关于Postgres 8.1:

选择generate_series,选择username FROM users LIMIT 1 OFFSET generate_series FROM generate_series 0,选择count*-1 FROM users


我相信,即使源表没有唯一的ID或标识符,这种技术也会起作用。

在SQL Server 2005及更高版本上,您可以使用OVER来实现这一点:

选择“按公司的订单排名”\u id作为rownum ,公司名称
从SQL Server 2005及更高版本上的company

,您可以使用OVER来完成以下任务:

选择“按公司的订单排名”\u id作为rownum ,公司名称
来自公司

由于您不允许使用行号,我假设这是家庭作业?这是一位朋友在数据库引擎上查找WorkedPends时在测试中遇到的问题。如果它们支持变量,则可能是这样的:另一种解决方案是创建存储过程,但它们也可能会拒绝。由于您不允许使用行数,我假设这是家庭作业?这是一位朋友在数据库引擎上查找workDepends时在测试中遇到的一些问题。如果它们支持变量,则可能是这样的:另一种解决方案是创建一个存储过程,但是他们可能也会拒绝。我是说一个单选查询威尔,我是说一个单选查询数据库,前提是该表有一个具有唯一id或唯一可订购项的字段…这在问题中没有指定,因此没有保证它有这个+1无论如何:-任何数据库提供的表都有一个具有唯一id或唯一可订购项的字段…这在问题中没有指定,因此没有保证它有此字段+1无论如何:-