SQL编号列 - MySQL

时间:2008-12-22 02:53:47

标签: sql mysql

这是一个sql新手问题。

基本上,我希望使用select语句返回一个额外的列来对行进行编号。 我正在使用mysql。

例如:

select * from friends

David
Steve
Joe

获取的语法是什么:

1  David
2  Steve
3  Joe

5 个答案:

答案 0 :(得分:7)

来自:http://markmal.blogspot.com/2006/04/oracle-like-rownum-in-mysql.html

SELECT @rownum:=@rownum+1 rownum, t.*FROM (SELECT @rownum:=0) r, mytable t;

答案 1 :(得分:1)

在SQL Server 2005及更高版本中,您可以使用Row_Number函数。

答案 2 :(得分:1)

如果您正在开发某个应用程序,最好从结果集或数据集或您用来保存结果的任何容器中获取记录数。基本的想法是在你的代码中完成它。否则,保罗解决方案将适用于您的情况。

在MySql中,没有像ROWNUM,我们在Oracle中拥有的东西,也没有Row_Number(),我们在MS SQL Server中拥有的东西,也没有任何其他变体。

修改

通过在代码中执行此操作,如果基础数据库发生更改,则无需更改SQL语句,仅仅是因为这个原因。

答案 3 :(得分:0)

我将在存储过程中执行此操作

CREATE TABLE #Foo (
        [FooId] [int] IDENTITY(1,1) NOT NULL,
        [Name] varchar(255)
)

SELECT *
FROM Friends
INTO #Foo

SELECT *
FROM #Foo

答案 4 :(得分:0)

正如您可能已经从您收到的不同回答中猜到的那样,答案取决于您使用的DBMS。但是,答案通常涉及ROWNUM或该拼写的变体。

标准的SQL答案可能是ROW_NUMBER() - @YonahW提到;它作为窗口函数使用,并非在所有DBMS中都可用。