这是一个sql新手问题。
基本上,我希望使用select语句返回一个额外的列来对行进行编号。 我正在使用mysql。
例如:
select * from friends
David
Steve
Joe
获取的语法是什么:
1 David
2 Steve
3 Joe
答案 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中都可用。