当前位置: 首页 > 面试题库 >

在查询之前和之后获取行

佟寒
2023-03-14
问题内容

我目前有这个查询

SELECT  short_url,
        type,
        file_thumbnail,
        file_embed,
        media.id,
        user,
        media.file_url,
        votes,
        comments,
        GROUP_CONCAT(info.itemTime) AS time,
        info.title,
        media.time AS oldTime,
        media.title,
        info.topic,
        GROUP_CONCAT(votes) AS totalVotes,
        GROUP_CONCAT(votes) AS listVotes, 
        GROUP_CONCAT(comments) AS listComments, 
        GROUP_CONCAT(url) AS listSites 
from    info JOIN 
        media on info.mid=media.id 
WHERE   media.id='$id' 
GROUP BY    mid 
ORDER BY    media.id DESC 
LIMIT 0,1

我添加了一项新功能,可让您轻松导航到上一个或下一个项目。有没有一种简单的方法可以修改上面的查询,以便它提取上一行,当前行和下一行?还是仅执行另一个查询会更容易?


问题答案:

您可以使用子查询来获取previos和下一条记录的ID:

...
where media.id in (
  '$id',
  (select max(id) from media where id < '$id'),
  (select min(id) from media where id > '$id')
)
...


 类似资料:
  • 问题内容: 使用postgres,我想检索每个不同的软件包,但检索每个组的最新软件包。 例如,我有一个名为产品的表: 我想通过SQL查询获得以下结果: 我已经尝试了几项(我认为)可以在mySQL中工作的方法,但是我无法正确地用于Postgres。 有可能做些什么,我将如何做? 谢谢, 问题答案: SELECT t.package_name, p.price, t.MaxDate FROM (SEL

  • 问题内容: 我很难理解将BEFORE和AFTER放在嵌套诺言之间的区别。 选择1: 选择2: 每个函数的行为如下,如果号码是test1的失败,如果号码是test2的失败,如果数量不TEST3失败。在这种情况下,test2仅失败。 我试图运行并使test2Async失败,然后在执行之前和之后都以相同的方式运行,并且未执行test3Async。有人可以向我解释在不同地方放置渔获物的主要区别吗? 在每个

  • 我非常精通编码,但偶尔我会遇到似乎做基本相同事情的代码。我在这里的主要问题是,为什么你会使用 .() 而不是 ? 我一直在寻找,似乎找不到两者之间区别的明确定义,以及何时使用它们,何时不使用它们。 一个比另一个有什么好处,为什么我要使用一个而不是另一个??有人能给我解释一下吗?

  • 问题内容: ExpressJS中间件,,有像钩子和。 但是我正在寻找和方法的挂钩。 问题答案: 和中间件可用于“ 之前 ”,而and 事件的组合可用于“ 之后” 。 中间件就是一个例子,默认情况下,它将在响应后追加到日志中。 只需确保先使用此“ 中间件 ”即可,因为顺序很重要。

  • 问题内容: 我有一个由一些条件创建的复杂查询,我想从将要执行的构建器对象中获取最终的SQL查询。我可以那样做吗? 问题答案: 您可以执行以下操作: 但是Laravel不会在查询中向您显示参数,因为它们是在准备查询后绑定的。 因此,您也可以执行以下操作:

  • 我试图捕获关键字后面的文本,一直到行的结尾。我花了很多时间在堆栈交换和在线regex测试人员上,试图找到正确的组合。 我非常接近,但我的输出继续捕获新的行。regex101.com声明.*?匹配任何字符(换行符除外)。我很难理解为什么它总是捕获换行符。 下面是我正在搜索的文本的一个片段: Blahblahlah\n公司:BALDWIN LINE CONST OF MD Inc\n联系人姓名:STE