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
分享到:
相关推荐
不过,我们可以使用CASE WHEN语句来实现相同功能。 例如,要计算"数学/英语"的比例,但避免除以0的错误,可以这样写: ```sql SELECT username, stuid, CASE WHEN english = 0 THEN '分母为0' ELSE math / ...
- SQL Server 中则通常采用 TOP 子句或 OFFSET/FETCH NEXT 子句来实现类似的功能: ```sql SELECT TOP 20 * FROM tab_name ORDER BY column_name; ``` 4. **性能考量:** - 使用 ROWNUM 进行分页查询时,需要...
在数据库操作中,有时候我们需要为查询结果集中的每一行添加一个行号(或行序号),类似于Oracle中的`ROW_NUMBER()`功能。然而MySQL并未直接提供与Oracle完全相同的功能,因此我们需要通过其他方式来实现这一需求。...
在MySQL中,生成自增长序号是常见的需求,尤其是在处理数据分页或排序时。然而,与Oracle和SQL Server等其他数据库系统不同,MySQL的早期版本(如5.1.33)并未提供ROWNUM这样的内置功能。这篇文章将介绍如何在MySQL...
本文实例讲述了mysql简单实现查询结果添加序列号的方法。分享给大家供大家参考,具体如下: 第一种方法: 代码如下:select (@i:=@i+1) as i,table_name.* from table_name,(select @i:=0) as it 第二种方法: set...
- **MySQL**则没有内置的类似`SEQUENCE`的功能,但可以通过自增字段(`AUTO_INCREMENT`)或者使用触发器等方式来模拟实现序号生成。 ```sql INSERT INTO table_name (column_name) VALUES (seq_name.NEXTVAL); ``` ...
- **伪列**:如`ROWID`(唯一标识表中一行的存储地址)和`ROWNUM`(查询结果集的行序号)。 在实际操作中,SQL语句的编写可以通过各种方式简化,比如使用`SELECT`语句创建新表,直接复制已有表的数据,或者只选择...
ROW_NUMBER() 函数是 SQL Server 2005 引入的一个重要特性,它使得数据库开发者能够在不支持 LIMIT 关键字的 SQL Server 中实现类似 MySQL 的分页效果。该函数可以为结果集中的每一行分配一个唯一的整数,从而允许...
本文将深入探讨数据库分页的基本概念、原理以及实现方式,并通过具体的SQL语句示例来帮助读者更好地理解和掌握这一重要的数据库操作。 #### 一、什么是数据库分页? 数据库分页是指在查询大量数据时,按照一定的...
这种方法与上一种类似,也是通过`Row_Number()`生成序号,但使用`WITH`语句创建一个公共表表达式(CTE),从而避免了临时表的使用。示例如下: ```sql WITH sss AS( SELECT *,ROW_NUMBER() OVER(ORDER BY ...
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) ...