0

我有以下查询:

select wall.postid from wall,posts where  
wall.postid = posts.postid and posts.userid=puserid
order by wall.postid desc LIMIT 4 OFFSET 0;

它以下列方式返回结果。

  wall.postid
-----------------
      52
      51
      50
      49

现在我想将最大值(即 52)和最小值(即 49)保存在一个变量中,以便我可以在下一个查询中使用它。我正在使用以下查询来执行此操作。

select @upper:=max(wall.postid),@lower:=min(wall.postid) from wall,posts where  
wall.postid = posts.postid and posts.userid=puserid
order by wall.postid desc LIMIT 4 OFFSET 0;

我已经但是这些变量保存了列的最大和最小 ID,而不是这个结果集。即它返回我 max = 52 和 min = 41,这是列的最小值。我需要 min = 49。

4

2 回答 2

2

您需要在聚合之前进行限制以获得您想要的结果

 select
     @upper = max(postID),
     @lower = min(postID)
 from
 (
      select wall.postid from wall 
          inner join posts on wall.postid = posts.postid 
      where   
      posts.userid=puserid 
      order by wall.postid desc LIMIT 4 OFFSET 0
 ) as v

还要注意改进的 ANSI-92 连接语法。

于 2012-09-03T12:25:36.990 回答
0
select @upper:=max(`postid`), @lower:=MIN(`postid`) 
from
(
select wall.postid from wall,posts where  
wall.postid = posts.postid and posts.userid=puserid
order by wall.postid desc LIMIT 4 OFFSET 0)m
于 2012-09-03T12:27:21.320 回答