gpt4 book ai didi

Sqlite Scrolling Cursor 如何在重名的情况下正确滚动

转载 作者:行者123 更新时间:2023-12-05 01:47:52 25 4
gpt4 key购买 nike

我已经使用 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_idrowid).

如果按多列排序,WHERE 表达式会变得更加复杂。以下表为例,按 XY 排序:

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/

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