`

mysql 记录集中记录序号,MySQL中实现rownum功能类似的语句

 
阅读更多

MySQL中实现rownum功能类似的语句

MySQL 如何实现 Oracle 的 ROWNUM2010/01/28 23:56mysql> SELECT * FROM frutas;
+-----------+----------+
| nombre    | color    |
+-----------+----------+
| fresa     | rojo     |
| platano   | amarillo |
| manzana   | verde    |
| uva       | verde    |
| pera      | verde    |
| mandarina | naranja  |
| melocoton | marron   |
| limon     | amarillo |
+-----------+----------+
8 rows in set (0,00 sec)

【一条sql语句完成,不set变量】
SELECT @rownum:=@rownum+1 AS rownum, frutas.*
FROM (SELECT @rownum:=0) r, frutas;

mysql> SELECT @rownum:=@rownum+1 AS rownum, frutas.*
-> FROM (SELECT @rownum:=0) r, frutas;
+--------+-----------+----------+
| rownum | nombre    | color    |
+--------+-----------+----------+
|      1 | fresa     | rojo     |
|      2 | platano   | amarillo |
|      3 | manzana   | verde    |
|      4 | uva       | verde    |
|      5 | pera      | verde    |
|      6 | mandarina | naranja  |
|      7 | melocoton | marron   |
|      8 | limon     | amarillo |
+--------+-----------+----------+
8 rows in set (0,00 sec)


但是如何把这个查询放在 create view 里面
mysql> CREATE VIEW vw_frutas AS SELECT @rownum:=@rownum+1 AS rownum, frutas.*
->  FROM (SELECT @rownum:=0) r, frutas;
ERROR 1351 (HY000): View's SELECT contains a variable or parameter

分享到:
评论
1 楼 hhf20121008 2016-03-01  
同问  不知道怎么解决?

相关推荐

    [数据库] MySQL基础知识之日期判断及添加排序序号1

    不过,我们可以使用CASE WHEN语句来实现相同功能。 例如,要计算"数学/英语"的比例,但避免除以0的错误,可以这样写: ```sql SELECT username, stuid, CASE WHEN english = 0 THEN '分母为0' ELSE math / ...

    oracle rownum 的使用 和sqlserver有区别的!

    - SQL Server 中则通常采用 TOP 子句或 OFFSET/FETCH NEXT 子句来实现类似的功能: ```sql SELECT TOP 20 * FROM tab_name ORDER BY column_name; ``` 4. **性能考量:** - 使用 ROWNUM 进行分页查询时,需要...

    MYSQL获取行号row_no

    在数据库操作中,有时候我们需要为查询结果集中的每一行添加一个行号(或行序号),类似于Oracle中的`ROW_NUMBER()`功能。然而MySQL并未直接提供与Oracle完全相同的功能,因此我们需要通过其他方式来实现这一需求。...

    MySQL rownumber SQL生成自增长序号使用介绍

    在MySQL中,生成自增长序号是常见的需求,尤其是在处理数据分页或排序时。然而,与Oracle和SQL Server等其他数据库系统不同,MySQL的早期版本(如5.1.33)并未提供ROWNUM这样的内置功能。这篇文章将介绍如何在MySQL...

    mysql简单实现查询结果添加序列号的方法

    本文实例讲述了mysql简单实现查询结果添加序列号的方法。分享给大家供大家参考,具体如下: 第一种方法: 代码如下:select (@i:=@i+1) as i,table_name.* from table_name,(select @i:=0) as it 第二种方法: set...

    ORACLE和MYSQL

    - **MySQL**则没有内置的类似`SEQUENCE`的功能,但可以通过自增字段(`AUTO_INCREMENT`)或者使用触发器等方式来模拟实现序号生成。 ```sql INSERT INTO table_name (column_name) VALUES (seq_name.NEXTVAL); ``` ...

    SQL语句的分类与简化

    - **伪列**:如`ROWID`(唯一标识表中一行的存储地址)和`ROWNUM`(查询结果集的行序号)。 在实际操作中,SQL语句的编写可以通过各种方式简化,比如使用`SELECT`语句创建新表,直接复制已有表的数据,或者只选择...

    ROW_NUMBER SQL Server 2005的LIMIT功能实现(ROW_NUMBER()排序函数)

    ROW_NUMBER() 函数是 SQL Server 2005 引入的一个重要特性,它使得数据库开发者能够在不支持 LIMIT 关键字的 SQL Server 中实现类似 MySQL 的分页效果。该函数可以为结果集中的每一行分配一个唯一的整数,从而允许...

    数据库分页方法

    本文将深入探讨数据库分页的基本概念、原理以及实现方式,并通过具体的SQL语句示例来帮助读者更好地理解和掌握这一重要的数据库操作。 #### 一、什么是数据库分页? 数据库分页是指在查询大量数据时,按照一定的...

    SQL分页查询方式汇总

    这种方法与上一种类似,也是通过`Row_Number()`生成序号,但使用`WITH`语句创建一个公共表表达式(CTE),从而避免了临时表的使用。示例如下: ```sql WITH sss AS( SELECT *,ROW_NUMBER() OVER(ORDER BY ...

    sql分页查询几种写法

    1. **Not In / Top**: 这种方法是通过获取前n个ID,然后在主查询中排除这些ID,来实现分页。例如: ```sql SELECT TOP 50 * FROM pagetest WHERE id NOT IN (SELECT TOP 9900 id FROM pagetest ORDER BY id) ...

Global site tag (gtag.js) - Google Analytics