select * from 表 where 1=1 and #{字段} >rownum 改为pgsql 写法
时间: 2024-02-06 14:02:13 浏览: 77
在 PostgreSQL 中,没有类似于 Oracle 中的 `ROWNUM` 伪列,但可以使用 `LIMIT` 和 `OFFSET` 关键字来实现类似的功能。因此,可以将上述查询改写为:
```
SELECT * FROM table_name WHERE column_name > #{value} LIMIT 10 OFFSET #{rownum};
```
其中,`value` 是要比较的值,`rownum` 是要跳过的行数,`10` 表示要输出的行数。这将从表 `table_name` 中选择所有列,并且只输出满足条件 `column_name > value` 的前 10 行,跳过前面的 `rownum` 行。需要注意的是,`LIMIT` 和 `OFFSET` 关键字的顺序是不能颠倒的,否则查询结果会不正确。
相关问题
select * from 表 where id >rownum 改为pgsql写法
在 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 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 中,字符串需要使用单引号 `'`,而不是双引号 `"`。
阅读全文