oracle中,select * from WXDA_GROUP_MESSAGE where id = '3385762713863199347' 把这条消息的前20条和后20条的sql写出来
时间: 2024-02-11 14:04:48 浏览: 67
Oracle 中查询指定消息前20条和后20条消息可以使用如下语句:
前20条消息的 SQL 语句:
```
SELECT * FROM (
SELECT * FROM WXDA_GROUP_MESSAGE WHERE id < '3385762713863199347' ORDER BY id DESC
) WHERE ROWNUM <= 20;
```
后20条消息的 SQL 语句:
```
SELECT * FROM (
SELECT * FROM WXDA_GROUP_MESSAGE WHERE id > '3385762713863199347' ORDER BY id ASC
) WHERE ROWNUM <= 20;
```
其中,前20条消息的 SQL 语句使用了子查询和 ROWNUM 来限制结果集的数量,先按照 ID 降序排列,再取出前20条记录。后20条消息的 SQL 语句同样使用了子查询和 ROWNUM 来限制结果集的数量,先按照 ID 升序排列,再取出前20条记录。需要注意的是,Oracle 中 ROWNUM 是在结果集返回之后才进行排序和筛选的,因此需要在子查询中进行排序。
相关问题
select * from WXDA_GROUP_MESSAGE where id = '3385762713863199347' 把这条消息的前20条和后20条的sql写出来
前20条消息的SQL语句:
```
SELECT * FROM WXDA_GROUP_MESSAGE WHERE group_id = (SELECT group_id FROM WXDA_GROUP_MESSAGE WHERE id = '3385762713863199347') AND id < '3385762713863199347' ORDER BY id DESC LIMIT 20
```
后20条消息的SQL语句:
```
SELECT * FROM WXDA_GROUP_MESSAGE WHERE group_id = (SELECT group_id FROM WXDA_GROUP_MESSAGE WHERE id = '3385762713863199347') AND id > '3385762713863199347' ORDER BY id ASC LIMIT 20
```
这两条SQL语句分别查询了与指定消息在同一群聊中的前20条和后20条消息。其中,先通过指定消息的ID,查询出该消息所在的群聊ID,然后再根据该群聊ID和指定消息的ID,分别查询前20条和后20条消息。前20条消息按照ID降序排列,后20条消息按照ID升序排列。
阅读全文