gpt4 book ai didi

php - 在 SQLite 中选择和项目的当前、上一个和下一个值的最有效方法

转载 作者:行者123 更新时间:2023-12-03 17:59:01 26 4
gpt4 key购买 nike

目前我有一个页面在左侧和右侧使用 php 和 SQLite 显示 2 个图像。

使用给定的图像 ID 我查询

  • 该图像的文件
  • 下一张图片的文件
  • 下一张图片的链接
  • prev-prev-image
  • 的链接
  • 到 prev-image 的链接(如果 prev-prev 不存在)

  • 我尝试过使用偏移量,但是如果我的偏移量超出范围,似乎整个查询都会失败,有什么方法可以防止或捕获它吗?
    select id, file, findex
    from vfb
    where findex > (select findex from vfb where findex<4 and bookcode='BEFB'
    order by findex desc limit 1 offset 1)
    and findex < (select findex from vfb where findex>4 and bookcode='BEFB'
    order by findex asc limit 1 offset 1)
    and bookcode='BEFB'
    order by findex asc;

    现在我正在使用 select(select a where x<1) as a1, (select a where x=1) as b1, (select b where x=1) as c1结构,这很丑陋,事实证明我现在需要来自查询的更多信息,例如( select a where x<1)。

    那么,有没有办法缩短我的查询或使用类似 (select a,b where x<1) as a1,b2 的内容? ?

    我的 table 就像 Id|bookcode|page|findex(fakepage)|file|title|stuff|morestuff
    全丑选择:
    select 
    (select findex from vfb where bookcode='BOOK' and findex<
    (select findex from vfb where bookcode='BOOK' and findex<100 order by findex desc limit 1) order by findex desc limit 1) as p2,
    (select findex from vfb where bookcode='BOOK' and findex<100 order by findex desc limit 1) as p1,
    (select file from vfb where bookcode='BOOK' and findex==100) as f1,
    (select file from vfb where bookcode='BOOK' and findex>100 order by findex asc limit 1) as f2,
    (select findex from vfb where bookcode='BOOK' and findex>
    (select findex from vfb where bookcode='BOOK' and findex>100 order by findex asc limit 1) order by findex asc limit 1) as n2;

    结果是: 98|99|BOOK_Page_104_Image_0001.png|BOOK_Page_105_Image_0001.png|102
    我尝试过使用偏移量,但是如果我的偏移量超出范围,似乎整个查询都会失败,是否有办法阻止或捕获它?

    最佳答案

    好谜,我只考虑了 findex 字段。
    请试试:

      SELECT t3.findex , t2.findex, t4.findex
    FROM vfb t1
    JOIN vfb t2 ON t1.findex > t2.findex
    JOIN vfb t3 ON t2.findex > t3.findex
    JOIN vfb t4 ON t1.findex < t4.findex
    WHERE
    t1.findex = 100
    AND t1.bookcode='BOOK'
    AND t2.bookcode='BOOK'
    AND t3.bookcode='BOOK'
    AND t4.bookcode='BOOK'
    ORDER by t3.findex desc, t2.findex desc, t4.findex asc
    LIMIT 1

    如果以上工作,请考虑在 findex 列上添加索引。 GL!

    关于php - 在 SQLite 中选择和项目的当前、上一个和下一个值的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15426367/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com