- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用 SQL Lite 和 C# 实现了一个滚动游标。好吧,我只是在 SQL Lite 工具中使用 SQL 进行测试。
所以我让它在以下位置运行滚动光标:
http://sqlite.org/cvstrac/wiki?p=ScrollingCursor
所以我有这个工作,但结果不正确。
SELECT title FROM tracks
WHERE singer='Madonna'
AND title>:lasttitle
ORDER BY title
LIMIT 5;
假设这些是我的跟踪表中的字段:
轨道编号歌手标题媒体格式
然后说我有一堆记录()
4 Madonna <All my love demo> .mp3
2 Madonna <Be cool demo> .wav
7 Madonna <Like a Virgin> .aaf
1 Madonna <Like a Virgin> .adi
5 Madonna <Like a Virgin> .mp4
11 Madonna <Like a Virgin> .wmv
3 Madonna <Like a Virgin> .mp5
8 Madonna <Like a Virgin> .mp6
10 Madonna <Like a Virgin> .mp7
9 Madonna <Like a Virgin> .mp8
6 Madonna <Like a Virgin> .mp9
所以基本上我有相同标题的无限记录,只要 media_format 不同,media_format 使它们独一无二。
记录按标题排序(如您在查询中所见),因此唯一 ID 没有按顺序排列。
当向前滚动以获取最后一个标题所在的下 5 条记录时,我该如何做滚动光标
假设我已经将第一页加载到我的 C# 应用程序中,然后我在 lastitle 变量中向前滚动
它不会给我正确的记录。所以如果我将大于 > 更改为大于或等于 >= 那么它将给我 5 条记录,从第一次出现开始,但我需要它从记录 6 开始
我需要看看:
第 1 页
4 Madonna <All my love demo> .mp3
2 Madonna <Be cool demo> .wav
7 Madonna <Like a Virgin> .aaf
1 Madonna <Like a Virgin> .adi
5 Madonna <Like a Virgin> .mp4
第 2 页
11 Madonna <Like a Virgin> .wmv
3 Madonna <Like a Virgin> .mp5
8 Madonna <Like a Virgin> .mp6
10 Madonna <Like a Virgin> .mp7
9 Madonna <Like a Virgin> .mp8
最佳答案
您的记录必须完整有序。
如果 WHERE 过滤器中的列(此处:singer
/title
)可以识别多条记录,则必须添加其他列以使过滤器唯一。在您的情况下,这可能是 media_format
,但如果您的程序不知道可以使用其他什么列,它应该只使用主键(track_id
或 rowid
).
如果按多列排序,WHERE 表达式会变得更加复杂。以下表为例,按 X
和 Y
排序:
X Y
- -
A 1
A 2 <- last record on previous page
A 3
B 1
B 2
要获取前一条记录之后的所有记录,您必须搜索具有相同X
值和更大Y
值的记录,或者具有更大X
值:
SELECT *
FROM MyTable
WHERE (X = 'A' AND Y > 2)
OR (X > 'A')
ORDER BY X, Y
在您的示例中,这将是:
SELECT *
FROM tracks
WHERE singer = 'Madonna'
AND ((title = :lasttitle AND media_format > :lastformat) OR
title > :lasttitle)
ORDER BY title, media_format
LIMIT ...
关于Sqlite Scrolling Cursor 如何在重名的情况下正确滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21082956/
我是一名优秀的程序员,十分优秀!