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

一点点复杂的sql行位置

余阳秋
2023-03-14
问题内容

基本上我有相册,其中包含50张图像init。.现在,如果我显示图像列表,我知道从哪一行显示(显示:50的20到30),意味着从20到30显示10行。问题是,我想选择一个图像,但仍然显示它选择了哪个位置,因此我可以来回移动,但也要保持该位置。

就像如果我选择第5张图像,其ID为’sd564’,我想显示(50张图像中的6张),表示您正在看到50张图像中的6张..如果我得到下一行ID并显示,那么我想展示(50张图片中的7张)。

好吧,我可以轻松地从分页指针完成所有这些操作,例如在url中说(after = 5,after = 6)…它随位置移动,但是如果我没有这个(after
= 6)并且只有一个id,该怎么办?我怎么还能那样做?

我也不想使用(after = 6),因为它的动态站点和图像会添加和删除,因此放置chnages并与其他人共享并返回相同的旧链接,那么它将是错误的位置。

我应该为此运行哪种SQL查询?

目前我有

select * from images where id = 'sd564';

显然,我需要在查询中添加限制或其他内容以获取我想要的内容,或者运行另一个查询以获取结果,同时也要保留此旧查询。无论如何,我只想定位。我希望你能帮助我解决这个问题

示例: http


//media.photobucket.com/image/color%20splash/aly3265/converse.jpg

样本http://img41.imageshack.us/img41/5631/viewing3of8240.png

相册查询请求 (请在下面查看帖子)

select images.* from images, album
where album_id = '5'
and album_id = image_album_id
order by created_date DESC
limit ....;

问题答案:

假设created_date每个元素album_idalbum_idcreated_date)对于中的所有行都是唯一的images,则这是:

select     i1.*, count(*) as position
from       images i1
inner join images i2
on         i1.album_id      = i2.album_id     -- get all other pics in this album
and        i1.created_date >= i2.created_date -- in case they were created before this pic
where      i1.album_id = 5
group by   i1.created_date

将会可靠地为您获取图像及其位置。请理解,这仅在(album_id,created_date)在整个图像表中是唯一的情况下才能可靠地工作。如果不是这种情况,则该位置将不可靠,并且由于可能您看不到所有照片GROUP BY。还要注意,这样的GROUP BY子句仅列出列表中出现的某些列SELECT(在本例中为images.*)在大多数RDBMS-
es中无效。有关此问题的详细讨论,请参见:http : //dev.mysql.com/tech-
resources/articles/debunking-group-by-myths.html

通过做这个:

select     i1.*, count(*) as position
from       images i1
inner join images i2
on         i1.album_id      = i2.album_id     -- get all other pics in this album
and        i1.created_date >= i2.created_date -- in case they were created before this pic
where      i1.album_id = 5
group by   i1.created_date
having     count(*) = 4

您选择第4个位置的图片(请注意having count(*) = 4

通过做这个:

select     i1.*, count(*) as position
from       images i1
inner join images i2
on         i1.album_id      = i2.album_id     -- get all other pics in this album
and        i1.created_date >= i2.created_date -- in case they were created before this pic
where      i1.album_id = 5
group by   i1.created_date
having     count(*) between 1 and 10

您选择位置1到10的所有照片(having再次注意该条款。)

当然,如果您只想要一个特定的图像,则可以简单地执行以下操作:

select     i1.*, count(*) as position
from       images i1
inner join images i2
on         i1.album_id      = i2.album_id     -- get all other pics in this album
and        i1.created_date >= i2.created_date -- in case they were created before this pic
where      i1.image_id = 's1234' 
group by   i1.created_date

这将正确报告图像在相册中的位置(当然,假设image_id在images表中是唯一的)。在这种情况下,您不需要Have子句,因为您已经精确定位了想要的图像。



 类似资料:
  • 问题内容: 在我的Flask-RESTful API中,假设我有两个对象,用户和城市。这是一对多关系。现在,当我创建我的API并向其中添加资源时,我似乎可以做的就是将非常简单的通用URL映射到它们。这是代码(不包括无用的东西): 如你所见,我可以做所有想实现非常基本的功能的事情。我可以获取,发布,放置和删除两个对象。但是,我的目标有两个: (1)能够使用其他参数(例如城市名称)而不只是城市ID进行

  • 问题内容: 我想在主要评论之后显示最新评论及其回复。显然,答复将具有最新日期,因此我无法按日期对日期进行排序,因为答复将位于主要日期之上。我不确定如何通过一个查询正确执行此操作。任何想法都可以。 数据库转储:http : //pastie.org/576963 问题答案: 我猜文章的“回复ID”为0,评论的文章号为。如果这是您的设计,这应该可以工作: 添加: 感谢您在评论中提供其他信息。将结果按所

  • 什么是 Nutz.Dao 中的复杂SQL条件 对于 Nutz.Dao 来说,它本质上就是将你的 Java 对象转化成 SQL,然后交给 JDBC 去执行。 而 SQL 中,当执行数据删除和查询操作时,最常用的就是 WHERE 关键字。 WHERE 关键字后面的就是所谓的复杂查询条件 Nutz.Dao 将如何如何使用这个条件 Dao 接口的 clear 方法和 query 方法的第二个参数,就是为了

  • SQL有以下优点: 快速 - 使用SQL查询,用户可以快速有效地从数据库中检索大量记录。 无需编码 - 在标准SQL中,管理数据库系统非常容易。它不需要大量代码来管理数据库系统。 明确界定标准 - ISO和ANSI是长期建立使用的SQL数据库标准。 可移植性 - SQL可用于笔记本电脑,PC,服务器甚至某些手机。 互动语言 - SQL是用于与数据库通信的域语言。 它还用于在几秒钟内接收复杂问题的答

  • 如果我想要浮点数中的点后3位数字,该怎么办? 如果那么我想要的值为

  • 我想对无序的复杂浮点数组进行鼻子测试。 例如,如果 和 断言应该成功,因为它们具有大致相同的值和相同的次数。顺序无关紧要。 对于常规浮点数,很好,但这在这里不起作用,因为它首先按实部排序,然后按虚部排序,因此由于浮点数错误,它们被排序为: 有没有内置的方法可以做到这一点?如果没有,我想我可以求助于类似cplxreal的东西,但这似乎需要添加到测试文件中。