select * from 表 where id >rownum 改为pgsql写法
时间: 2024-02-04 15:02:02 浏览: 79
在 PostgreSQL 中,可以使用以下查询语句来实现类似 Oracle 数据库中的查询:
```
SELECT * FROM 表 WHERE id > (SELECT COUNT(*) FROM 表 WHERE id < 当前行id);
```
其中,当前行id可以通过子查询获取,例如:
```
SELECT * FROM 表 WHERE id > (SELECT COUNT(*) FROM 表 t2 WHERE t2.id < t1.id);
```
其中,t1 是外部查询中的表别名,t2 是子查询中的表别名。
相关问题
select * from 表 where id >rownum 是什么意思
这个 SQL 查询语句是有语法错误的,因为 `rownum` 是 Oracle 数据库中一个伪列(pseudo column),不能在 WHERE 子句中使用。`rownum` 是指 Oracle 返回的结果集中每一行的行号,不是表中的实际行号。
如果你想查询表中 `id` 大于某个值的所有行,可以使用以下语法:
```sql
SELECT * FROM 表 WHERE id > 值;
```
其中 `表` 是表名,`id` 是表中的列名,`值` 是一个具体的数值。例如:
```sql
SELECT * FROM employees WHERE id > 100;
```
这个查询会返回 `employees` 表中 `id` 大于 100 的所有行。
select * from 表 where sid in('9999') and id >rownum 改为pgsql写法
在 PostgreSQL 中,`rownum` 这个关键字没有对应的语法,因此需要进行改写。
可以使用 `LIMIT` 和 `OFFSET` 来实现类似的功能,其中 `OFFSET` 表示跳过的行数,`LIMIT` 表示返回的行数。
因此,可以把原来的 SQL 语句改写为:
```sql
SELECT * FROM 表 WHERE sid IN ('9999') OFFSET rownum LIMIT 2147483647
```
其中,`2147483647` 表示返回的最大行数,相当于没有限制。注意,在 PostgreSQL 中,`LIMIT` 子句必须在 `OFFSET` 子句之后。
另外,需要注意的是,在 PostgreSQL 中,字符串需要使用单引号 `'`,而不是双引号 `"`。
阅读全文